이안의 평일코딩

[책리뷰] 비전공자를 위한 이해할 수 있는 IT 지식 본문

Study/Books

[책리뷰] 비전공자를 위한 이해할 수 있는 IT 지식

이안92 2022. 4. 30. 18:16
반응형

 책 소개

우리는 매일 스마트폰으로 메시지를 보내고, 컴퓨터로 일을 합니다. 또 음식점에서 키오스크로 주문하고, 가상현실에서 게임을 즐깁니다. IT는 더 이상 전문가들만의 이야기가 아닙니다. 우리의 삶 곳곳을 IT가 점령하고 있고, 그 속도는 계속해서 빨라지고 있습니다. 이제 IT를 모르고선 세상을 이해하기 어려운 시대가 되었습니다.
이 책은 비전공자를 위한 ‘IT 기초 문법서’로, 한 번쯤 들어봤을 프로그래밍 언어, 운영체제, 네트워크, API, JSON, 데이터베이스, 이미지 처리, 프레임워크, 라이브러리, 깃(Git), 디자인 이슈 등 다양한 지식을 담고 있습니다.
복잡하게 얽혀 있어 한 번에 이해하기 어려웠던 각각의 지식들을 친숙한 이야기로 쉽게 풀어냄으로써 IT 산업의 전체적인 큰 그림을 그릴 수 있도록 도와줍니다.

2020년 07월 14일 출간

240쪽, 최원영 저

 

 리뷰

완독일: 2022-04-24

 개발자 사이에서 가장 차별적인 발언은 '비전공자 출신'이라고 생각한다. 나도 마찬가지로 비전공자 출신 개발자다. 주홍글씨처럼 따라 다니는 저 단어는 오히려 내 열등감을 자극해 다른 직원보다 더 노력하게 만드는 성장의 원동력이 되고있다. 어제 코로나 이후 첫 팀회식 자리에서도 팀장님께서 왜 경제학부 출신인데 개발자가 되려고 했어요? 라는 질문을 했다. 캐나다 워킹홀리데이 기간 중 사귀었던 동양인 친구들이 개발자로 일하는 것이 멋있었고 요즘 트렌드잖아요라며 가볍게 말하자 그 대답은 충분치 않다고 했고, 나는 더 나아가 배우는 것을 좋아하는데 개발자는 평생 공부해야 되는 직업이라고 생각해서 도전해보고 싶게 만들었다라고 대답했고 그 말에는 만족을 하셨는지 다른 화제로 넘어갔다.

 전공자든 비전공자든 과거가 어떻든 개발자는 미래의 산업을 이끌어나가야 하고 현재에서 앞만보고 끊임없이 최선을 다해야한다. 개발자 세계의 거친 파도에서 살아남으려면 누구보다 열심히 노를 저어야 한다. 항상 배우고 새로운 것에 적응하고 회고를 통해 나아가야 한다. 이 책은 그런 비전공자 출신 개발자에게 항해의 길잡이가 되어줄 나침반과 같은 책이다. 개인적으로 그리 어려운 내용을 다루진 않아서 가볍게 지하철에서 출퇴근하는 동안 완독했다. 개발자로 전향하거나 프로그래밍을 처음으로 배우는 학생들 그리고 IT에 관심이 생겼지만 어떻게 입문해야할지 모르겠는 분들에게도 추천한다. 앞으로 이 책이 시리즈물로 심화적인 내용들도 다루면 좋겠고 나온다면 기꺼이 매해서 읽을 것이다.

 

 요약

p.41~43

 CPU는 컴퓨터의 '머리' 역할을 합니다. 다음은 '메모리'입니다. 마지막으로 HDD(하드디스크), SSD라고 불리는 보조기억장치가 있습니다. 컴퓨터의 '창고' 역할을 합니다. 전원이 꺼져도 이 안의 데이터는 남아있죠. 이 부품들을 메인보드라고 하는 판에 끼웁니다. 여기에 전원을 붙이면 컴퓨터가 됩니다. CPU는 따로 데이터를 저장하지 않기 때문에 데이터를 연산하거나 처리하려면 저장된 데이터를 CPU로 보내줘야 합니다. 이때 CPU는 창고 역할을 하는 기억장치인 HDD, SSD에 신호를 보냅니다. 보조기억장치는 CPU보다 속도가 매우 느리기 때문에 CPU와 보조기억장치가 같이 일을 하면 CPU가 보조기억장치를 계속 기다려야 하므로 속도가 하향 평준화가 됩니다. 그래서 '메모리'라는 CPU의 개인 작업 공간을 만들었습니다. 이제 CPU는 보조기억장치에 필요한 데이터를 그때그때 요청하지 않아도 됩니다. 작업이 필요한 큰 데이터 뭉치를 보조기억장치에서 메모리로 한 번 옮겨놓고 메모리 안에서만 작업하면 되니까요.

 

p.46

 모든 운영체제는 우리 대신 하드웨어를 관리해줍니다. 하드웨어의 용량이 얼마나 있는지 확인할 수 있는 것도 운영체제가 보조기억장치(HDD, SSD)를 관리하고 있기 때문에 가능한 일입니다. 프로그램을 설치하는 것과 실행하는 것도 마찬가지입니다. 운영체제가  하드웨어를 컨트롤하고, CPU와 메모리 등을 관리해주기에 우리는 클릭 몇 번만으로 편하게 애플리케이션을 실행하고 설치할 수 있습니다.

 

p.58~59

 컴퓨터가 연결된 작은 지역을 LAN(Local Area Network) 이라고 표현합니다. '로컬(Local)'은 작은 지역이죠. LAN을 연결하는 선을 LAN선이라고 부릅니다. 도시의 여러 LAN을 하나로 연결해 MAN(Metropolitan Area Network)을 만들었고 도시와 도시, 나라와 나라를 모두 연결해서 WAN(Wide Area Network)을 만들었습니다.

 

p.73~77

 리눅스에도 다양한 버전이 있습니다. 리눅스의 유명한 버전 중 하나는 우분투(Ubuntu)입니다. 즉, 리눅스는 하드웨어를 관리해서 사용자가 프로그램을 사용하기 쉽게 도와주는 윈도우나 맥 OS 같은 운영체제이고, 우분투는 그런 리눅스 버젼 중 하나라고 이해하시면 됩니다. 또 다른 유명 버전으로는 레드햇(Red hat) 리눅스가 있습니다. 레드햇은 리눅스를 개량해서 유료로 판매하는 회사입니다. 회사에서 운영체제의 품질을 보장해주기 때문에 레드햇을 유료로 이용하는 이유입니다. 또 다른 리눅스의 유명한 개량 버전에는 안드로이드가 있습니다. 안드로이드는 구글이 리눅스를 모바일 운영체제 형태로 개량해서 발전시킨 운영체제입니다. 서버에서는 윈도우, 맥 OS 등등 우리가 많이 쓰는 운영체제보다는 리눅스를 씁니다. 윈도우 위에서 포토샵이나 파워포인트 등의 프로그램을 돌리듯, 서버 컴퓨터는 리눅스 위에서 서버 프로그램을 돌립니다. 서버에는 '그래픽 UI'가 딱히 필요 없습니다. 서버 프로그램은 24시간, 365일 '안정적'으로 돌아가는 게 중요합니다. 리눅스가 윈도우나 맥 OS보다 저렴한 이유 중 하나입니다.

 

p.79~80

 서버 서비스를 제공하는 업체를 '호스팅 업체'라고 부릅니다. 국내에는 대표적으로 Cafe 24, 가비아 등의 회사가 있습니다. 아마존의 AWS는 서버 컴퓨터 대여뿐 아니라 다양한 분야의 기업들에게 여러 솔루션을 함께 제공해주고 있습니다. AWS가 제공하는 기능들만 잘 사용해도 안정적이고 효율적인 서버를 쉽게 구축할 수 있습니다.

 

p.85~90

 API는 클라이언트, 서버와 같은 서로 다른 프로그램에서 요청과 응답을 주고 받을 수 있게 만든 체계입니다. 요청을 보내는 쪽과 응답을 주는 쪽이 나뉘어 있습니다. API는 서버 개발자가 개발하고, 클라이언트 개발자는 그 API를 사용합니다. 사람들은 좀 더 체계적으로 API를 관리하고 싶어 했고 그 영향으로 조금 더 체계적인 API라는 사회 운동이 만들어지는데 그런 API를 REST(Representational State Transfer)한 API 즉, RESTful API라고 부릅니다. RESTful API에서는 이전보다 주소 개수가 줄어듭니다. CRU를 하나의 주소로 관리합니다. Create(생성): POST, Read(읽기): GET, Update(수정): PUT(전체)/PATCH(일부), Delete(삭제): DELETE

 

p.94

 클라이언트의 요청에서 문제가 있는 경우, 400번대 코드(401, 404..)로 표현하기로 정했습니다. 반면 문제가 서버에 있는 경우, 500번대 코드(500, 501..)로 표현하기로 정했습니다. 예를 들면, 404라는 에러 코드는 보통 정의되지 않은 요청을 보낼 때 나타납니다. 서버는 문제없이 잘 돌아가고 있는데 요청이 이상하다는 이야기죠.

 

p.123~126

 HTML은 컴퓨터에게 특정 일을 시킬 수 있는 프로그래밍 언어가 아닌 단지 브라우저가 볼 수 있는 문서를 적는 언어입니다. HTML과 CSS를 합쳐서 '퍼블리싱' 작업이라고 표현하고, 이 작업을 하는 사람들을 '퍼블리셔'라고 부릅니다. '마크업'이라는 말도 종종 등장합니다. '마크업 디자인', '마크업 작업', '마크업 개발자' 등등의 방식으로 불리죠. 마크업의 M은 HTML(Hyper Text Markup Language)의 M을 뜻합니다. 웹 쪽에서는 'JavaScript'라는 프로그래밍 언어를 통해 또 다른 기능을 원하는 사람들의 역할을 해줍니다.

 

p.144

 시간이 흘러 스마트폰과 태블릿이 등장하면서 문제가 생겼습니다. 그래서 네이버, 다음과 같은 회사들은 주소 앞에 'm'이 붙는 '모바일용 웹 페이지'를 따로 만들었습니다. 그런데 모바일과 PC 버전 웹 페이지를 따로 만들어서 출시하는 것은 불편합니다. CSS 파일을 수정해야 하기 때문입니다. (내용을 수정해야 한다면 HTML을 두 번 수정해야 하고요). 작업이 중복되기 때문에 비효율적이고 버그가 생길 수도 있습니다. 이런 불편함을 해결하기 위해 등장한 기술이 '반응형 웹'입니다.

 

p.151

 브라우저를 통해 HTML, CSS, JavaScript를 가져와서 보여주는 방식의 장점은 수정하기 좋다는 점입니다. 서버의 HTML, CSS, JavaScript만 수정하면 따로 심사를 받거나 설치할 필요 없이 새로 고침할 때 반영됩니다. 하지만 네트워크에 종속되기 때문에 와이파이나 모바일 네트워크가 느린 공간에 가면 HTML, CSS, JavaSCript를 모두 다운로드하는 동안 사용자들은 기다려야 합니다. 반면 네이티브로 만들면 수정하는 데 넘어야 할 산이 많다는 단점이 있습니다. 특히 iOS 심사는 큰 장벽 중 하나입니다. 더불어 심사가 끝나도 사용자들이 직접 업데이트를 해줘야 합니다. 네트워크를 최소한으로 이용하도록 코딩한다면 인터넷이 느린 환경에서도 빠르게 동작합니다.

 

p.163~167

 데이터는 CPU, 메모리, 보조기억장치 중 보조기억장치에 저장되는 반면 데이터베이스 관리 시스템(DBMS)은 소프트웨어죠. 그 말은 CPU와 메모리가 있다면, 데이터베이스 관리 시스템을 실행할 수 있다는 말입니다. 우리는 '네트워크'에서 두 개의 서로 다른 컴퓨터 그룹을 배웠습니다. '클라이언트'와 '서버'죠. 클라이언트와 서버는 컴퓨터이기 때문에 모두 CPU, 메모리, 보조기억장치를 가지고 있습니다. 그렇다면 클라이언트와 서버 컴퓨터 위에는 모두 데이터베이스 관리 시스템을 돌릴 수 있고, 데이터를 저장할 수 있다는 말입니다. 그렇기 때문에 데이터는 클라이언트에도 저장할 수 있습니다. 서버에서만 데이터베이스를 사용하는 것처럼 알고 계시는 분들이 많지만, 실제로는 그렇지 않습니다. 개발의 이슈에 따라서 클라이언트의 데이터베이스도 많이 활용합니다. 어떤 스마트폰에서 접속해도 똑같이 보이는 데이터는 서버에 있기 때문에 데이터를 변경한다면, 다른 모든 기기에 변경된 데이터가 표시됩니다.

=> 로컬, 내부DB, 네이티브, 클라/클라이언트, 프론트/프론트엔드 vs 서버, API 요청, (그냥) DB, 백/백엔드

 

p.185~187

 모바일 프레임워크에는 애플 Objective-C, Swift의 Cocoa / 구글 Java, Kotlin의 Android Framework / 웹 JS의 Angular.js, Vue.js, React.js가 있다. 웹과 마찬가지로 서버도 특정 회사의 소유가 아니기 때문에 다양한 프레임워크가 있다. 자바는 스프링(Spring)이라는 프레임워크가 유명하고 파이썬은 장고(Django), 루비(Ruby)에는 레일스(Rails)라는 프레임워크가 있다. JavaScript로도 서버를 개발할 수 있고, 이때는 익스프레스(Express.js)라는 프레임워크를 많이 사용합니다. 라이브러리도 다른 사람들이 만들어놓은 코드를 이용한다는 측면에서 프레임워크와 같습니다. 프레임워크가 더 큰 개념입니다. 각종 라이브러리와 코드들이 모여 프레임워크가 됩니다. 더불어 한 프로젝트에서 프레임워크는 하나만 쓸 수 있습니다.

 

p.203

 애플은 HIG(Human Interface Guideline)를 제공하여 애플의 기기가 어떤 방침을 가지고 있는지 말하고 있습니다. 구글은 Material Design이라는 가이드를 제공합니다.

반응형

'Study > Books' 카테고리의 다른 글

[책리뷰] 오늘도 개발자가 안된다고 말했다  (0) 2022.04.29
Comments