본문 바로가기
기타

[도서] 비전공자를 위한 이해할 수 있는 IT 지식

by 디디 ( DD ) 2022. 12. 31.

 

 

저자 최원영 / 티더블유아이지 / 2020.07.14

 


  부트 캠프 시작 전 추천 도서 목록에 있었던 책이다. 산책을 하며 들른 집 앞 도서관에 있길래 가볍게 빌려서 읽어봤다. 개발자와 일할 일이 많은 기획자 등이 이 책의 주된 대상인 것 같았다. 나처럼 일반적인 수준의 IT 지식을 가지고 있는 사람들이 부담 없이 술술 읽으며 기초 개념을 잡기에 괜찮은 책이라고 생각한다. 뭐랄까 개발자가 아닌 똑똑한 사람이 자신의 필요로 스스로 찾아 배운 내용을 자신과 같은 사람들을 위해 쉽게 설명해 주는 느낌? 실무에서 주고받을 만한 대화 내용이 중간중간 나오는데, 처음에는 이게 뭔 소리야 싶던 게 후반부로 갈수록 점점 이해가 되는 신기한 경험을 할 수 있다. 

 


  다른 분야에 비해 변화의 속도가 빠르고 비교적 발전 역사가 짧은 IT 산업. 처음부터 완벽에 가까운 기획을 한 후 결과물을 만들어 내는 것이 오히려 더 빠른 길인 경우가 종종 있는데, IT 분야에서만큼은 그렇게 해선 결과물을 적시에 만들어 낼 수가 없다. 핵심 뼈대만 잡은 후 다양한 사람들과 커뮤니케이션을 하며 완성도를 높여나가는 이른바 '점진적 발전'이 이 분야의 특징이라고 할 수 있다. 

  개발을 배우며 느낀 건데, 자유롭게 이용할 수 있는 오픈 소스도 상당히 많고 심지어 검색을 통해 찾은 다른 사람의 코드를 복사, 붙여넣기하는 경우도 많다. 처음엔 뭔가 이래도 되나 싶은 느낌이 들었지만 지금은 나도 구글링하고 복사, 붙여넣기하는 것에  꽤 익숙해졌다. '바퀴를 다시 발명하지 마라.'라는 프로그래밍 격언을 들은 적이 있는데, 필요한 정보를 잘 찾고 잘 활용하는 것이 개발자의 중요 덕목 중 하나인 것 같다. 뭔가 정석이나 명확한 느낌이 없는 학습에 더 익숙해져야겠다. 

 

 

  이 책에서 가장 좋았던 부분은 컴퓨터에 대한 간단한 설명이 있는 앞부분이었다. 하드디스크니 메인보드니 익숙하지만 익숙하지 않은 부품들에 대해 아주 쉽게 설명해 놓았다. 궁금해서 자료를 찾아봐도 너무 어려운 내용이라 포기하곤 했는데, 이제 조금은 알 것 같다. 

  컴퓨터의 구성요소는 cpu와 메모리, 그리고 보조기억장치가 있다. cpu는 머리라고 할 수 있고, 보조기억장치는 창고라고 할 수 있다. HDD(하드 디스크), SDD가 보조기억장치이다. 그리고 cpu와 보조기억장치가 같이 일을 하면 작업 속도가 너무 느려지기 때문에 이를 방지하기 위한 cpu의 개인 작업 공간이 존재하는데, 그것이 바로 메모리이다. 이것들을 모두 메인보드에 끼운 뒤 전원을 붙이면 컴퓨터가 된다.

  일반 사용자였던 내가 위와 같은 내용이 낯설었던 이유는 운영체제(os)라는 소프트웨어 덕분이다. 운영체제란 나 대신 하드웨어를 관리해 주는 관리자 같은 건데, 내가 사용 중인 윈도우나 이번에 배운 리눅스가 그 예라고 할 수 있다. 우분투는 리눅스의 버전 중 하나이고, 리눅스가 서버를 돌리는 데 이용되는 이유는 무료이기 때문이다. 아, 서버가 server라는 걸 알았을 때 오! 했다. 제공한다는 느낌이 확 오는 단어라고 생각한다. 
  이쯤까지 읽고 엉뚱한 생각이 들었다. 서버라는 게 컴퓨터가 계속 켜져 있어야 해서 개인 운영이 어려운 거라면, 전 세계의 개인 컴퓨터를 이용하면 되지 않을까? 라는 생각. 지금 이 순간에도 누군가의 컴퓨터는 켜져 있을 테니까 말이다. 세티@홈이라는 것에 대해 들어본 적이 있는데, 전 세계의 컴퓨터가 작업을 하지 않는 시간을 이용해 외계 생명체를 찾는 프로젝트라고 한다. 이와 관련해서 동생과 이야기를 나눠봤는데, 보안에 문제가 있을 것 같다고 했다. 음 해결 못할 문제는 아닐 것 같은데, 비용 면을 고려하면 결국 당장은 지금의 방식을 채택할 수밖에 없을 것 같다는 생각이 들었다. 관련해서 더 찾아보고 배워봐야겠다.

 

 

< 그 밖에 책을 읽으며 메모했던 내용들 >

 

- API : 클라이언트와 서버같이 서로 다른 프로그램에서 요청과 응답을 주고받을 수 있게 만든 체계.

           도로명 주소 같은 사람들끼리의 약속?

           open api를 이용해 개발할 수 있다. (예 : 구글맵)

 

- API 문서 :  클라이언트 개발자가 참고할 수 있도록 서버 개발자가 만들어 놓은 문서

                    뭐랄까.. 주소록?

                    완벽한 분석이 중요한 것이 아니다 원활한 커뮤니케이션이 중요한 것이다.

 

- '조금 더 체계적인 API'라는 사회운동이 있다. (예 : http 상태 코드)

 

- CRUD : 데이터를 다루는 4가지 요청

                Create (생성해 줘) : POST

                Read (불러와 줘) : GET

                Update (바꿔줘) : PUT(전체) / PATCH(일부)

                Delete (지워줘) : DELETE

 

- 유명한 형식을 다 같이 쓰자 해서 나온 게 json

   이번에 배운 객체, 배열과 같은 형식이다. 

 

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


- 웹과 애플리케이션

  웹은 서버에 원본이 있고, 그 사본을 내 화면에 띄우는 방식이라 수정이 용이하다는 장점이 있지만 네트워크에 영향을 크게 받는다는 단점도 있음. (새로고침할 때마다 새로 불러옴)

 

  앱은 네트워크의 영향을 덜 받을 수 있지만 사용자들이 각자 버전을 업데이트하게 해야 함. 그리고 각 버전은 일련의 심사과정을 통과해야 함.

 

하이브리드 애플리케이션 : 애플리케이션에 브라우저를 올려 웹과 애플리케이션이 혼합된 애플리케이션

 

- 웹 개발을 할 때는 브라우저 별로, 사용하는 언어별로 호환이 되지 않을 수 있기 때문에 '브라우저 버전의 파편화'를 잡아야 한다는 어려움이 있다. (caniuse.com이라는 사이트 참고) 점유율에 따라 파편화를 잡는 것이 현실적이다.

- 반응형 웹은 컴퓨터, 태블릿, 스마트폰 등 다양한 브라우저의 가로 넓이에 반응하여 구성요소가 변하는 웹을 말한다. 


- 데이터는 무결해야 한다.
  데이터 관리의 주요 방법론으로 관계형 데이터베이스가 있다.

- 데이터가 모두 서버에 있는 것은 아니다. 

  예를 들어 같은 이미지라도 일명 '관계'가 있어 관리하는 이미지는 서버에, 아이콘같이 그때그때 받아오면 시간이 오래걸려 효율적이지 않은 이미지는 클라에 둔다. 

  (용어 정리 : 로컬, 내부DB, 네이티브, 클라/클라이언트, 프론트/프론트엔드 --- 서버, API 요청, (그냥)DB, 백/백엔드)


- 라이브러리와 프레임워크

  프레임워크는 프랜차이즈와 같은 개념이다. (예 : 애플의 코코아)

 

- 버전 관리를 위해 git을 이용한다.

  커밋, 브랜치, 머지 ···

- 디자이너, 개발자 협업 시 제플린을 이용하면 디자이너가 가이드 만드는 시간을 줄일 수 있다. 그리고 개발자에겐 디자인 구현을 위한 소스코드를 추천해 주기도 한다. 


- 클라이언트 개발자라면 UI에 계속 관심을 가지자. 같은 디자인을 다양한 화면에 구현해야 하는 경우가 많다. 



  책을 읽으면서 IT 산업의 전체적인 흐름을 조금이나마 간접 경험할 수 있었다. 그리고 앞으로의 변화와 프론트엔드 웹 개발의 방향에 대해서도 좀 더 생각해 볼 수 있었던 것 같다. 

 

 

 

 

 

'기타' 카테고리의 다른 글

깃, 깃허브 뿌시기  (0) 2023.03.31
HTTP 상태 코드  (0) 2023.01.31
코드스테이츠 엔트리 코스 4일차/5일차  (0) 2022.11.09
코드스테이츠 엔트리 코스 3일차  (0) 2022.11.09
코드스테이츠 엔트리 코스 2일차  (0) 2022.11.09

댓글