신간소개 2023. 11. 6. 14:58

  ● 지은이: 이재용

  ● 페이지: 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 같은 텍스트 형태의 데이터는 저장할 때 파일 전체를 처음부터 끝까지 다시 기록해야 합니다. 수천 명의 회원 목록 중 단 한 명의 데이터만 변경되었다고 하더라도 수천 명의 회원 목록 전부 다시 기록해야 한다는 이야기입니다

 

_상세 이미지

 

                                                                                                _

posted by 로드북
:
오탈자 정보 2023. 11. 6. 14:53
posted by 로드북
:
자료실 2023. 11. 6. 14:52
posted by 로드북
: