사이드 프로젝트를 회고하면서 기획자는 넓고 얕은 지식이 중요하다고 스스로 정의내렸고, 개발+디자인을 더 공부해야겠다고 마음 먹었다. 그 결심을 실천하고자 이 책을 읽었다.
1장 오리엔테이션
- 개발자에게 "언제까지 될까요?"라는 질문은 항상 어렵습니다.
- 나도 핀블을 하면서 이런 질문을 많이 물어봤다. 그래서인지 이 문장을 보고 굉장히 뜨끔했다. API 문서를 읽을 줄 알았다면 진행 상황이 어느 정도 되었고, 대략 얼마나 소요될지 알 수 있었을 텐데. 아쉬운 마음이 든다.
2장 프로그래밍 언어 & 운영체제
- 자바, 파이썬, 루비, 스위프트 등 영어로 되어 있는 프로그래밍 언어를 사용해 컴파일러에게 명령을 전달하면, 컴파일러가 그 명령을 기계어인 0과 1로 변환해 컴퓨터에게 전달을 하는 방식입니다.
- CPU는 컴퓨터의 머리이고, 보조기억장치인 HDD와 SSD는 컴퓨터의 창고라고 볼 수 있습니다. CPU는 따로 데이터를 저장하지 않기 때문에 데이터를 연산하거나 처리하려면 저장된 데이터를 CPU로 보내줘야 합니다. 이때 CPU는 창고 역할을 하는 기억장치인 HDD, SSD에 신호를 보냅니다.
- ...CPU가 보조기억장치를 계속 기다려야 하므로 속도가 하향 평준화가 됩니다. 그래서 '메모리'라는 CPU의 개인 작업 공간을 만들었습니다. 이제 CPU는 보조기억장치에 필요한 데이터를 그때그때 요청하지 않아도 됩니다. 작업이 필요한 큰 데이터 뭉치를 보조기억장치에서 메모리로 한 번 옮겨놓고 메모리 안에서만 작업하면 되니까요. 가끔 메모리에 큰 데이터 뭉치만 전달해주면 되기 때문에 시간이 크게 줄어들었습니다.
- 프로그램을 실행할 때 '자! 이제 하드디스크의 3번 플래터에 접근해서, 포토샵 데이터를 2번 메모리의 3번 구역에 올린 뒤 CPU에게 일을 시켜야지!'라고 마음먹지 않습니다. 사실 이 모든 과정을 몰라도 프로그램을 사용하는 데는 아무 문제가 없습니다. 왜냐하면 '어떤 소프트웨어'가 이 모든 과정을 대신해 주기 때문입니다. 그 '어떤 소프트웨어'가 뭘까요? 바로 운영 체제(OS)입니다....이 모든 운영체제는 우리 대신 하드웨어를 관리해줍니다.
3장 네트워크, 클라이언트, 서버
- 파일을 계속 달라고 보채는 컴퓨터를 '클라이언트'라고 합니다. 그리고 파일을 주는 컴퓨터를 '서버'라고 합니다.
- 리눅스는 하드웨어를 관리해서 사용자가 프로그램을 사용하기 쉽게 도와주는 윈도우나 맥 OS 같은 운영체제이고(그런데 이제 무료인), 우분투는 그런 리눅스 버전 중 하나라고 이해하시면 됩니다.
- 레드햇은 리눅스를 개량해서 유료로 판매하는 회사입니다.
- 서버 컴퓨터는 리눅스 위에서 서버 프로그램을 돌립니다.
4장 API와 JSON
- API는 클라이언트, 서버와 같은 서로 다른 프로그램에서 요청과 응답을 주고 받을 수 있게 만든 체계입니다. '정확한 곳'에 해당하는 주소는 '서버주소/A'의 형태로 정의되어 있습니다. 여기서 '서버 주소'는 서버 컴퓨터가 위치한 주소입니다. ... 이러한 기능은 서버 개발자가 만들며, 그 결과물이 서버 프로그램입니다.
- 즉, API는 서버 개발자가 개발하고, 클라이언트 개발자는 그 API를 사용합니다.
- RESTful API에서는 이전보다 주소 개수가 줄어듭니다. CRUD를 하나의 주소로 관리합니다. 그리고 요청을 보낼 때 다음과 같이 어떤 요청을 보냈는지 파악할 수 있는 스티커(메소드)를 붙여서 함께 전송합니다.
- 정리하자면 API는 소프트웨어가 다른 소프트웨어의 기능을 쓰기 위해 중간에 필요한 체계입니다. 쉽게 말해, 기능을 사용하기 위해 주소로 요청을 보내면 응답을 해주는 소프트웨어끼리의 체계라고 이해하시면 됩니다.
- API를 제공해주는 '다른 소프트웨어'를 SDK라고 부릅니다.
- JSON - 요청(Request), 응답(Response) 안에 데이터를 담는 형식
- 클라와 서버는 요청과 응답을 주고받고, 그때 필요한 데이터들을 JSON 형식으로 주고받는다.
6장 웹(Web)
- 각 브라우저는 서로 다른 애플리케이션이기 때무에 브라우저에 따라 그 안의 구현 방식이 다릅니다.
- 웹 프론트 개발자는 소비자의 브라우저 버전과 종류에 맞춰 정상적으로 동작할 수 있도록, 추가로 코드를 작성해야 합니다. 이 문제를 '브라우저의 파편화'라고 부르고, 문제 해결을 위한 코딩을 '파편화를 잡는다'고 표현합니다.
- 하지만 실질적으로 점유율이 높은 브라우저는 몇 안 되기 때문에 큰 상관이 없다.
- 운영체제 안에 브라우저가 내장되자 새로운 방식으로도 애플리케이션 개발이 가능해졌습니다. 바로 애플리케이션의 특정 부분에 '브라우저'를 올리는 방식입니다. 그리고 HTML 파일을 불러올 URL을 설정해두는 거죠. 그럼 브라우저가 뜨고 그 브라우저는 HTML과 HTML에 연결된 파일들을 불러와서 보여줍니다. 그 부분은 HTML, CSS, JavaScript로 구성되어 있죠. 네이티브와 브라우저가 혼합된 애플리케이션입니다. 이렇게 웹과 애플리케이션이 혼합된 애플리케이션을 '하이브리드 애플리케이션'이라고 부릅니다.
- 어떤 기능이 웹인지 앱인지 구분하는 방법은! API 문서 보기!
7장 데이터베이스와 이미지 처리
- 우리는 개발팀의 사정과 상황에 무관심해선 안 되며 회사의 개발 결과물을 잘 파악하고 있어야 합니다. 더불어 개발팀이 현재 어디에 집중하고 있는지, 어떤 부분에서 막혔는지 파악하고 있어야 합니다. 그 시작이 바로 API 문서입니다.
- 최대한 네트워크에 부담이 가지 않도록 많은 이미지를 클라이언트에 놓아야 하지만 이미지가 바뀌었을 때 서비스에 영향을 준다면 서버에서 가져와야 합니다.
9장 협업, 소스관리, 디자인
- 깃을 통해 개발자들은 개발 단계별로 '깃발'을 꽂을 수 있습니다. 그 행위를 커밋이라고 합니다.
- 분석 기능과 동시에 진행해야 하는 코드들은 브랜치로 따로 관리합니다. 각각 서로 다른 곳에서 개발하는 거죠.
- 이후 각각의 브랜치에서 작업한 코드들을 합치기만 하면 됩니다. 코드를 합치는 기능이 바로 머지입니다.
- 개발자들은 깃을 기반으로 한 깃허브, 비트버킷 등의 원격 저장소라는 걸 만들었습니다. 개발자들이 자신의 컴퓨터(로컬)에서 작업을 한 뒤 커밋을 하면, 그 결과를 원격 저장소에 보낼 수 있고, 원격 저장소에서 이미 작업된 결과물을 가져올 수도 있습니다.
역시 책은 아티클을 읽었을 때와 달리 체계화된 지식을 갖추기에 좋다. 주니어 기획자로서 개발에 필요한 지식은 이제 어느 정도 갖춘 것 같다. 실무를 하면서 아직 모르는 것들을 배워가야겠다.
'BOOK' 카테고리의 다른 글
비트겐슈타인의 말 (0) | 2024.06.24 |
---|---|
바바라 민토 논리의 기술 (1) | 2023.05.10 |
프로덕트 오너 (0) | 2023.05.10 |
린 분석 (velog 이관) (1) | 2023.04.17 |
데이터 문해력 (velog 이관) (0) | 2023.04.13 |