'개발입문'에 해당되는 글 1건
● 지은이: 이재용
● 페이지: 608
● 판형: 152 * 223
● 도수: 2도
● 정가: 25,000원
● 발행일: 2023년 11월 10일
● ISBN: 979-11-93229-03-3 93000
[강컴] [교보] [반디] [알라딘] [예스24] [인터파크]
_도서 내용
개발을 한번 선택하면 은퇴할 때까지 해야 할지도 모릅니다. 정말 길고 긴 여행이 될지도 모르는데, 나침반과 지도 같은 가이드가 필요하지 않을까요? 이 책은 저자의 경험을 바탕으로 개발이라는 긴 여행을 하면서 필요한 여행 정보를 두루두루 실은 기술 여행 가이드입니다. 두렵기도 하고 설레기도 한 개발 여정에 오래오래 함께하는 책이 될 수 있도록 만들었습니다. 높은 곳에서 넓게 바라볼 때 시야가 트이고 가야 할 길도 또렷하게 잘 보이는 법을 생각하며 만든 책입니다. 기술과 교양을 넘나들며 누구나 쉽게 읽을 수 있게 만들었습니다.
_대상 독자
“개발자가 되기 위해 코딩만 열심히 하고 있는데, 내가 잘하고 있는 건지 모르겠다. 배워야 할 게 너무 많아 항상 불안하다.”
“개발자가 된 지 이제 불과 1년도 안 됐는데, 밤낮으로 프로젝트에 파묻혀 살다 보니 단순 코딩 머신이 되어 가는 느낌이다. 높은 곳에서 내가 있는 위치를 한번 확인해보고 싶다.”
_목차
저자 서문
1부 | 코드 이야기
1장_좋은 코드를 위한 고민
코드의 본질
좋은 코드를 위한 은유
좋은 코드를 위한 추상화
관심사의 분리
1장을 마치며
2장_안전한 코드를 위해서
버그와 장애
테스트 자동화
테스트 가능한 코드
테스트 환경
포스트 모텀
2장을 마치며
3장_코드 속 버그 잡아내기
동전의 양면과 같은 코딩과 디버깅
기상천외한 버그들
탐정이 될 시간
기본적인 디버깅 기술
그래도 안 풀려요!
3장을 마치며
4장_코드에도 패턴이 있다
건축학 개론
소프트웨어에서의 패턴
패턴의 발견
패턴이 유용한 이유
패턴의 유혹
4장을 마치며
5장_깃, 나는 네가 지난여름에 짠 코드를 알고 있다
버전을 관리해야 하는 이유
버전 관리 시스템의 역사
깃을 만든 리누스 토발즈
커밋 메시지 잘 작성하기
하나의 변경은 하나의 커밋으로
커밋으로 협업하기
5장을 마치며
6장_여전히 성장 중인 자바
다재다능한 자바
자바의 탄생
자바와 JVM
자바를 싫어하는 사람들
객체 지향 패러다임
6장을 마치며
7장_간결한 코드를 위한 파이썬
파이썬의 탄생
파이썬의 생산성
파이썬 vs. 펄
Pythonic하게 코드를 짜세요
7장을 마치며
8장_구글이 만든 프로그래밍 언어, Go
Go의 탄생
Go가 해결하고자 했던 문제
동시성 프로그래밍의 어려움
Go의 동시성 프로그래밍
경량 스레드, 고루틴
Go의 오류 처리
8장을 마치며
2부 | 환경 이야기
9장_서버 환경의 변화
정적 링크와 동적 링크
패키지 관리자
설치 문서
프로비저닝 도구
컨테이너의 시대
새로운 시대의 운영체제, 쿠버네티스
9장을 마치며
10장_클라우드로의 여정
전산실에서 IDC로
IDC에서 클라우드로
IaaS, PaaS, SaaS
클라우드 전환기
클라우드 네이티브의 특징
10장을 마치며
11장_태생의 한계에 도전하는 웹 이야기
웹의 탄생
정적인 웹에서 동적인 웹으로
Ajax의 등장
또 하나의 자바스크립트
jQuery의 군림
새로운 자바스크립트 프레임워크의 등장
싱글 페이지 애플리케이션
서버 측 랜더링이 포함된 SPA
11장을 마치며
12장_데이터베이스: 초기부터 오늘날까지
데이터가 사는 곳: 메모리와 디스크
데이터베이스의 등장
관계형 데이터베이스의 저력
관계형 데이터베이스의 한계
새로운 데이터베이스를 위한 시도: NoSQL
12장을 마치며
13장_웹 서비스를 위한 아키텍처 성장기
최초의 애플리케이션
애플리케이션 서버의 확장
데이터베이스 서버의 확장
캐시
HTTP 캐시
애플리케이션 캐시
CDN을 이용한 캐시
13장을 마치며
14장_모니터링으로 꿰뚫어보기
베일에 감춰진 코드의 동작
시스템 관리자의 모니터링
모니터링 데이터: 메트릭
모니터링 데이터: 로그
데이터 시각화
24/7 모니터링을 위한 알림 창
이상치 탐지
14장을 마치며
15장_코드는 파이프라인을 타고
소프트웨어 배포
배포의 고통
지속적인 배포를 위해
간단한 ‘지속적인 배포’ 맛보기
GitOps
무중단 배포
15장을 마치며
16장_마이크로서비스
서브 루틴의 진화
마이크로서비스의 출현
마이크로서비스의 한계
마이크로서비스 간의 통신
마이크로서비스로의 전환
장애 전파
SRE: Site Reliability Engineering
16장을 마치며
17장_데이터 포맷
네트워크 너머로 데이터 보내기
0과 1로 표현하기
비트들을 그대로 저장할 수 없는 이유
직렬화
17장을 마치며
3부 | 개발자 이야기
18장_프로그래밍에 대한 열정
재미있고 어렵다
프로그래밍을 향한 동기
결과물 파 vs 순수 코드 파
몰입의 즐거움
18장을 마치며
19장_더 나은 개발자로 성장하기
성장 가능성
무엇을 먼저 공부해야 하나
개발자의 자질
좋은 개발자의 모습
끊임없는 학습
안전지대 벗어나기
나보다 나은 개발자 만나기
기술 블로그 만들기
토이 프로젝트 및 스터디
19장을 마치며
20장_더 나은 팀 문화를 위하여
개발팀의 문화
업무 환경의 변화
비동기 의사소통
문서화의 중요성
모두의 코드를 위한 리뷰
20장을 마치며
19장_더 나은 개발자로 성장하기
성장 가능성
무엇을 먼저 공부해야 하나
개발자의 자질
좋은 개발자의 모습
끊임없는 학습
안전지대 벗어나기
나보다 나은 개발자 만나기
기술 블로그 만들기
토이 프로젝트 및 스터디
19장을 마치며
20장_더 나은 팀 문화를 위하여
개발팀의 문화
업무 환경의 변화
비동기 의사소통
문서화의 중요성
모두의 코드를 위한 리뷰
20장을 마치며
찾아보기
매일 파도처럼 밀려오는 새로운 지식에 치이지 않기 위한 나침반과 같은 책
넓은 기술 분야의 지식을 높은 곳에서 한눈에 조망할 수 있는 책
각 지식 간의 연결 고리를 이어주어 인사이트를 주는 책
매일 파도처럼 밀려오는 새로운 지식들을 헤쳐 나가는 것은 어두운 미로를 손전등 하나만 들고 헤매는 것과 같습니다. 그것들 간의 맥락을 설명해주는 나침반과 지도가 꼭 있어야 합니다. 높은 곳에서 한눈에 조망할 수 있다면 이를 기반으로 각 지식 간의 연결 고리를 쉽게 이어갈 수 있습니다.
때로는 한껏 줌을 땡겨 좁은 영역에 복잡한 기술 지식을 자신만의 언어와 표기법으로 새겨 넣습니다. 이러한 과정을 반복하다 보면 멀리서 봤을 때 여러 기술 지식들이 얽히고 설켜 복잡한 개미굴과 같은 3차원의 지도가 완성되어 갑니다.
여러분의 기술 지도를 확장해 나가는 데 도움이 되었으면 좋겠습니다.
닻을 올리고 개발자로서 여행을 떠나는 이들이 더 멀리까지 바라볼 수 있도록 도와주는 책이면 좋겠습니다.
여행 가이드 북이라는 제목처럼 아주 세세한 내용까지는 다루지는 못했습니다. 이때 둘러대기 가장 좋은 핑계는 역시 "지면의 한계"일 것입니다. 하지만 설령 그 한계가 무한하다 하더라도 앞으로 여러분이 기술 분야에서 겪게 될 모든 경험과 즐거움을 책 한 권에 녹여내는 일은 불가능합니다.
그 부분은 여러분의 설레는 탐험의 몫으로 남겨놓겠습니다.
어쩌면 저도 미처 발견하지 못한 아름다운 여행지를 찾게 될지도 모르는 일입니다. 아니, 분명 그렇게 될 것입니다.
_본문 속의 글, 글, 글
“하지만 컴퓨터라는 독자만을 염두에 두고 코드를 작성하다가는 머지않아 큰 문제에 부딪히게 됩니다. 2차 독자인 사람을 염두에 두지 않았기 때문입니다.”
“자바에서 예외를 처리할 때 사용되는 throw와 catch라는 키워드 역시 일종의 은유입니다. 사실 이 은유는 다른 언어와는 다른 자바의 예외 처리 방식을 효과적으로 나타내기 위한 목적이 있습니다.”
“관심사를 분리하여 코드를 작성하면 각각의 코드 영역에서 적은 수의 관심사에만 집중할 수 있기 때문에 코드를 파악하는 것이 훨씬 수월합니다.”
“코드가 강하게 결합되어 있다면 유지 보수 비용이 크게 드는 경향이 있습니다. 일반적으로 ‘의존성 주입 (Dependency Injection)’ 등의 기법을 통해 결합도를 낮출 수 있습니다.”
“이 과정에서 인상적이었던 부분은 깃랩의 사고 수습 및 복구 과정이 상당히 투명하게 공개되었다는 것입니다. 그들은 복구 진행 프로세 스 전반을 트위터 계정을 통해 실시간으로 알렸습니다.”
“이제부터는 바야흐로 탐정이 될 시간입니다. 디버깅은 수수께끼를 푸는 것과 비슷합니다. 복잡한 수수께끼를 풀기 위해 관찰력, 지식, 직관, 추론 능력으로 중무장하고 끈기와 인내로 문제를 해결해 나가는 셜록 홈즈가 되어야 합니다.”
“버그 재현과 로그를 통해 디버깅을 수행할 때 그 과정을 꼼꼼히 기록하는 것도 큰 도움이 됩니다. 복잡하거나 난해한 버그의 경우 이를 추적하는 데 며칠에서 길게는 몇 달까지 걸릴 수 있습니다. 이 기간 동안 획득한 단서나 실험 결과를 머릿속에만 유지하기보다는 일종의 디버깅 문서를 만들어 기록하는 것이 좋습니다.”
“패턴에는 이름도 중요합니다. 만약, ‘문’이라는 이름이 없었다면 건축 사무소에 온 손님에게 도면을 설명하기 위해 “여기에 문을 달겠습니다” 대신 “여기에 경첩이 달린 직사각형 형태의 나무를 대고 손잡이를 달아서 여닫을 수 있는 물체를 달겠습니다”라고 설명해야 할 것입니다.”
“그제서야 각 개발자는 각자의 사본을 가지고 직접 브랜치를 생성하고 커밋을 만들어 나갈 수 있었습니다. 이를 통해 정말 훌륭한 기능을 추가하거나 심각한 버그를 고칠 수 있게 되었습니다.”
““혼자 가면 빨리 갈 수 있지만 함께 가면 멀리 간다”라는 말이 있습니다. 본문에서 언급한 리누스 토발즈도 사실은 리눅스와 깃을 오롯이 혼자 만들지는 않았습니다. 수많은 오픈소스 기여자들과 함께 수십 년 간 훌륭한 소프트웨어를 만들어 오고 있습니다.”
“자바의 생태계에서도 이러한 문제를 인식하고 자바의 장황함을 줄이고자 노력하고 있습니다. 예를 들어, 자바 8에서 ‘람다 표현식’을 도입함에 따라 새로운 스레드를 생성하기 위한 코드가 아래와 같이 간결해졌습니다.”
“재미있는 점은 위의 코드 대신 for (i = 0; i <=9; i++)로 써도 동작은 동일하게 돌아가지만 이렇게는 잘 쓰지 않는다는 점입니다. 사람들은 이미 전자의 패턴에 익숙해져 있는 상태에서 0~9가 아닌 0~8까지 도는 반복문이라고 잘못 인식할 가능성이 있기 때문입니다.”
“이와 같이 Go의 특징을 통해 설계 철학을 엿보다 보면 Go의 목적이 가장 뛰어난 프로그래밍 언어를 만들기 위한 연구의 성격이 아닌 동료의 작업 환경을 개선하고 생산성을 향상시키기 위한 시도였다는 것을 알 수 있습니다. 대학을 갓 졸업하고 구글에 입사한 주니어 개발자들도 새로운 언어를 쉽게 익혀 안전한 코드를 작성할 수 있도록 말입니다.”
“개발자들이 자주 하는 변명에 대해 순위를 매겨본다면 아마 다음의 말이 1위를 차지하지 않을까 싶습니다. “제 컴퓨터에선 잘 되는데요?””
“json 같은 텍스트 형태의 데이터는 저장할 때 파일 전체를 처음부터 끝까지 다시 기록해야 합니다. 수천 명의 회원 목록 중 단 한 명의 데이터만 변경되었다고 하더라도 수천 명의 회원 목록 전부 다시 기록해야 한다는 이야기입니다”
_상세 이미지
_끝
'신간소개' 카테고리의 다른 글
[신간소개] 생성형 AI를 활용한 게임 개발: ChatGPT, Tensor.Art, Udio (2) | 2024.12.03 |
---|---|
[신간안내] 백견불여일타(이젠 프로젝트다!)리액트 쇼핑몰 프로젝트 (0) | 2024.04.16 |
[신간 안내] 자바의 신 VOL.2 주요 API 응용편, 3rd Edition (0) | 2023.10.13 |
[신간 안내] 자바의 신 VOL.1 기초 문법편, 3rd Edition (0) | 2023.10.13 |
[신간안내] 개발자로 첫 출근했어요: 사내 개발 도구, 기술, 문화 적응 가이드 (0) | 2023.09.27 |