책 관심

비전공자를 위한 이해할 수 있는 IT지식 - 최원영 -

For freedom 2023. 8. 27. 11:03
728x90

 

최근 업무 관련된 책을 읽고 있다. 

 

그 두번째 책은 IT지식을 쉽게 이해할 수 있게 써놓은 책이다.

 

전 회사 동료의 추천으로 읽었는데, 애매하게 알고 있던 것들이 정리된 느낌이다.

 

오늘도 도움이 되는 부분만 정리를 해보겠다.

 

 

1. 오리엔테이션

만약 IT산업에서 자동차를 만들고 싶다면, 자동차의 완벽한 기획서에서 출발해선 안 됩니다. 왜냐하면 지금 떠올린 자동차의 모습이 6개월, 1년 뒤에도 완벽한 자동차의 모습이라고 장담할 수 없으니까요. 그래서 처음에는 이동수단이라는 '핵심기능'에 중점을 두어서 스케이트보드 형태의 자동차를 만듭니다. 이후 꼭 필요한 기능등을 붙여서 킥보드 형태로 발전시켜 나가죠. (중략) IT산업에서는 이런 식으로 점진적 발전만 있을 뿐입니다. 변화의 속도가 빠르기 때문에 처음부터 완성된 형태를 정해놓고 만드는 것은 위험한 일입니다.

 

2. 프로그래밍 언어&운영체제(OS)

- 뭐가 이렇게 많아? (C언어, 자바, 파이썬... 등)

이런 프로그래밍 언어를 구분하는 하나의 기준이 있다면, 바로 '저수준'과 '고수준'입니다. '저수준'은 '컴퓨터 친화적인 언어'입니다. 고수준은 '인간 친화적인 언어'죠.
(중략) 소비자가 IPTV를 사용하면서 고급 '컴퓨터 기능'을 원하는 게 아니기 때문에 회사는 IPTV 셋톱박스에 들어가는 컴퓨터 사양을 낮춰서 가격을 떨어뜨려야 합니다. 이런 컴퓨터에서는 최대한 저수준 언어를 사용해야 하고요.

 

3. 네트워크, 클라이어언트, 서버

- 한강에서 카카오톡을 다운로드하고, 실행하면 일어나는 일들

먼저 앱스토어에 들어가서 카카오톡을 검색하고, 다운로드 버튼을 누르면 가까운 기지국으로 "카카오톡 설치 파일을 보내줘!"라는 신호가 갑니다. 신호는 WAN을 따라 이동합니다. 이때 항상 최종 목적지가 정해져 있습니다. 

 

앱스토어에서 앱을 다운받을 때

 

- 당신은 계속 뭘 달라고 하고, 누군가는 계속 뭘 준다

여러분의 스마트폰이나 고객의 컴퓨터가 모두 클라이언트입니다.

 

클라와 서버

 

- 도대체 우분투가 뭐죠?

그 이유는 리눅스가 기본적으로 '무료'이기 때문입니다.
리눅스는 '니루스 토발스'라는 사람이 만들었습니다. 개발자들이 가장 많이 쓴다고 할 수 있는 2개의 프로그램, 리눅스와 깃(Git)을 만든 사람입니다. 

 

4. API와 JSON

- POST는 뭐고, GET은 뭐죠? (feat. 개발자의 암호문)

API는 이렇게 진행이 됩니다. 요청을 보내는 쪽과 응답을 주는 쪽이 나뉘어 있습니다. 여러분의 스마트폰은(클라이언트 컴퓨터) 요청을 보내고, 서버 컴퓨터는 요청을 받아서 응답을 줍니다. (중략) 이렇게 CRUD별로 주소가 생깁니다. (중략) 프로그래밍은 사람이 하는 일이기 때문에 몇몇 주소들은 기능이 겹칠 수 있습니다. (중략) 조금 더 체계적인 API라는 사회 운동이 만들어집니다. 그런 API를 REST(Representational State Transfer)한 API 즉, RESTful API라고 부릅니다.
(중략)
그래서 '잘 됐어'는 200번대 코드로 표현하기로 정합니다. (중략) 클라이언트의 요청에서 문제가 있는 경우, 400번대 코드로 표현하기로 정했습니다. 반면 문제가 서버에 있는 경우, 500번대 코드로 표현하기로 정했습니다.

 

- 요청과 응답을 주고받을 때의 형식

클라와 서버는 요청과 응답을 주고받고, 그때 필요한 데이터들을 JSON형식으로 주고받는다.

 

JSON 형식

 

- API 문서 살펴보기

'https://api.cakes.com/v1/cakes/:id'라는 주소가 있습니다. 앞으로 'https"//api.cakes.com/'는 컴퓨터가 있는 위치입니다. 원래 IP주소가 들어가는 곳이죠. 그 뒤에 'v1/cakes/:id'가 붙어 있습니다. 케이크를 CRUD하기 위한 주소입니다.

 

API 샘플

 

5. 애플리케이션

- 설치한 뒤 실행하는 애플리케이션의 특징

애플은 깐깐합니다. 직원이 직접 애플리케이션을 살펴봅니다. (중략) 만약 구글의 지침에 맞지 않는 애플리케이션이 있다면, 구글은 예고 없이 마켓에서 내려버립니다. 

 

6. 웹(Web)

- 웹은 어떻게 이루어져 있고, 어떻게 동작할까?

여기서 주의해야 할 사항은 HTML이 프로그래밍 언어가 아니라는 점입니다. HTML은 컴퓨터에게 특정 일을 시킬 수 있는 언어가 아닌 단지 브라우저가 볼 수 있는 문서를 적는 언어입니다. (중략) HTML과 CSS를 합쳐서 '퍼블리싱' 작업이라고 표현하고, 이 작업을 하는 사람을 '퍼블리셔'라고 부릅니다. 

 

- 반응형으로 코딩하면 더 비싸나요? (그게 뭔데요?)

그래서 네이버, 다음과 같은 회사들은 'm.naver.com' / 'm.daum.net' 같이 주소 앞에 'm'이 붙는 '모바일용 웹 페이지'를 따로 만들었습니다. 그런데 모바일과 PC 버전 웹 페이지를 따로 만들어서 출시하는 것은 불편합니다. 디자인을 바꾸기 위해서는 서로 다른 CSS 파일을 수정해야 하기 때문입니다. (중략) 이런 불편함을 해결하기 위해 등장한 기술이 '반응형 웹'입니다. 

 

7. 데이터베이스와 이미지 처리

- 쇼핑몰을 생각해봅니다. 여기서 데이터는 대체 뭘까요?

이제 앞서 살펴봤던 '1.txt'부터 '10,000.txt'에 데이터를 쌓는 방법과 비교해보겠습니다. 먼저 이전에는 모든 파일을 돌아다녀야 했습니다. (중략) 데이터를 철저히 관리할 수 있게 되었습니다. 이러한 관리 기법이 '관계형 데이터베이스'입니다.

 

- 클라가 들고 있다는 게 뭐죠? (클라에 저장돼요. 클라가 가지고 있어요)

알람 애플리케이션은 인터넷이 연결되어 있지 않은 상태에도 동작하기 때문입니다. 서버와 통신하지 않고도 정상적으로 작동하죠. 알람 애플리케이션에는 서버가 필요하지 않기 때문에 그 데이터들 또한 클라이언트에 있겠죠. (중략) 이 문서를 읽어보면 데이터를 어디에서 불러오는지 명확하게 알 수 있습니다. 바로 "API 문서"입니다.

 

- 배너 좀 바꾸려는데, 자꾸 자기한테 말하면 안 된대요(왜 자꾸 사람이 바뀌는 건데...)

작은 이미지들도 있지만, 이미지 하나에 100MB가 넘어가는 큰 이미지들도 있습니다. 그런 이미지를 다운로드하려면 어마어마한 시간이 걸리겠죠. (중략) 클라이언트에 이미지를 놓으면 장점이 있습니다. 이미지를 다운로드받지 않아도 됩니다. (중략) 클라이언트의 이미지는 어떻게 바꿀까요? 클라이언트의 이미지를 바꾸기 위해서는 애플리케이션을 업데이트해야 합니다. 

 

8. 프레임워크와 라이브러리

- 코코아요? 그거 먹는 거잖아요. 그리고 자꾸 왜 도서관 얘기를 하는 거죠?(프레임워크, 라이브러리)

이처럼 거대 IT회사들은 개발자들이 자사의 애플리케이션을 쉽고 빠르게 개발할 수 있도록 프레임워크를 만들어 제공해주고 있습니다. 그런데 문제는 웹입니다. 웹은 특정회사의 소유가 아닙니다. (중략) 이렇듯 웹 프레임워크 및 라이브러리는 페이스북이나 구글 같은 회사가 만들기도 하고, 개인이 만들기도 합니다.

 

모바일 프레임워크/라이브러리

 

서버 프레임워크/라이브러리

 

 

원래는 10장까지 있는데 나머지는 정리하지 않아도 될 것 같아서 생략했다.

 

책이 알기 쉽게 써있어서 이해가 잘됐다.

 

한 가지 아쉬운 건 이걸 좀 더 일찍 봤으면 어땠을까 하는 아쉬움이..

 

책 자체는 이해가 쉽게 설명되어 있어 관련 분야 업무자라면 한 번쯤 읽어보면 내용 정리하는 데 도움이 될 것이다.