Fundamentals of Software Architecture / 엔지니어링 접근 방식으로 배우는 소프트웨어 아키텍처 기초

 

마크 리처즈, 닐 포드 지음 / 이일웅 옮김

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

11월

나는 리뷰어다 활동의 10번째 리뷰.

(벌써 10번째 리뷰라니!!! 한빛미디어 항상 감사합니다. 내년에도 잘 부탁드려요!!)

 

2021년 한빛미디어의 리뷰어로 활동하면서 책 제목으로만 봤을 때 가장 어려워 보이는 책이다.

아키텍처라는 단어만 들어도 흐음... 하게 되니 말이다.

 

하지만 우리 개발자분들 너무 겁먹지 말자. 우리 주니어를 위한 소프트웨어 아키텍처 기초다. 기초!

 

소프트웨어 아키텍트는 전문가로 간주되는 소프트웨어 개발자로서, 고수준의 설계를 결정하고 소프트웨어 코딩 표준, 도구, 플랫폼 등의 기술 표준을 지시한다. - 위키백과

 

당장 옮긴이의 말부터 어렵다. 고수준이라니. 하지만 한번 더 힘을 내보자.

 

'아키텍트에게는 기술의 깊이보다 폭이 더 중요하다'

'아키텍트는 기업의 정치 기류를 이해하고 처세를 잘해야 한다'

 

이 두 문장에서 무언가가 느껴진다면, 꼭 완독하겠다는 마음으로 책을 구매하자.

(한빛미디어 감사합니다. 저는 작은 희망을 보았습니다.)

 

공리 axiom

- 이미 정립되고 받아들여졌거나 그 자체로 자명한 명제 또는 정리

 

소프트웨어 아키텍트는 공리를 토대로 이론을 만들지만 수학보다 더 소프트하기 때문에 이론의 기반이 되는 기초 자체가 계속 빠른 속도로 변한다. 소프트웨어 개발 생태계는 일정한 동적 평형 상태로 존재한다. 즉, 어느 시점에서는 균형이 잡힌 상태이지만 장기적으로는 동적인 움직임을 나타낸다. 요즘 대세인 컨테이너화와 그로 인한 변화를 그 예로 들 수 있는데, 10년 전에는 없던 도구가 글로벌 소프트웨어 콘퍼런스도 열릴 정도로 성장했다.

 

하나의 작은 변화가 또 다른 작은 변화를 일으키고, 그런 일이 수백 회 반복되면 또 다른 생태계가 새로 탄생한다.

 

그래서...(아직 저자가 무슨 이야기를 하고 싶은지 모르겠다)

 

아키텍트는 이전 시대에서 물려받은 가정과 공리에 의문을 제기할 중요한 책임이 있다.

 

새로운 시대에는 그에 걸맞는 새로운 프랙티스, 도구, 측정, 패턴 등 많은 변화가 필요하다.

그리하여, 이 책은 지난 10년 동안 일어난 모든 혁신과 더불어 오늘날의 새로운 구조와 관점에 부합하는 새로운 지표를 바탕으로 소프트웨어 아키텍처를 현대적인 관점에서 살펴보려고 한다.

 

이 책은 이미 잘 알려진 패턴을 다루지만 산지식, 도구, 엔지니어링 프랙티스, 그 밖의 다른 입력에 기반한 새로운 접근 방식으로 바라본다.

그래서 기존 소프트웨어 아키텍처에서 당연시됐던 많은 공리들을 최근 생태계와 설계 아키텍처의 관점에서, 그리고 요즘의 전반적인 추세와 비교하여 다시 한번 돌아보는 책이다.

 

챕터를 보자

CHAPTER 1 서론

[PART I 기초]
CHAPTER 2 아키텍처 사고
CHAPTER 3 모듈성
CHAPTER 4 아키텍처 특성 정의
CHAPTER 5 아키텍처 특성 식별
CHAPTER 6 아키텍처 특성의 측정 및 거버넌스
CHAPTER 7 아키텍처 특성 범위
CHAPTER 8 컴포넌트 기반 사고


[PART II 아키텍처 스타일]
CHAPTER 9 기초
CHAPTER 10 레이어드 아키텍처 스타일
CHAPTER 11 파이프라인 아키텍처 스타일
CHAPTER 12 마이크로커널 아키텍처 스타일
CHAPTER 13 서비스 기반 아키텍처 스타일
CHAPTER 14 이벤트 기반 아키텍처 스타일
CHAPTER 15 공간 기반 아키텍처 스타일
CHAPTER 16 오케스트레이션 기반 서비스 지향 아키텍처 스타일
CHAPTER 17 마이크로서비스 아키텍처 스타일
CHAPTER 18 최적의 아키텍처 스타일 선정


[PART III 테크닉과 소프트 스킬]
CHAPTER 19 아키텍처 결정
CHAPTER 20 아키텍처 리스크 분석
CHAPTER 21 아키텍처 도식화 및 프레젠테이션
CHAPTER 22 개발팀을 효율적으로
CHAPTER 23 협상과 리더십 스킬
CHAPTER 24 커리어패스 개발
Appendix A 자율 평가 문제

 

굉장하다. 챕터만 봐도 숨이 막힌다. 아무래도 아키텍처는 내 길이 아닌가 싶기도 하지만,

깊은 지식 없이 얄팍하게 두루두루 알고 있는 본인을 보자면 또 이 쪽은 어떨까 싶은 생각이 든다.

 

아직 책을 다 보진 않았지만, 책 자체는 정말 굉장히 좋은 책이라고 생각한다. 전혀 생소한 분야 같지만 생각보다 접근성이 좋았고,

기초적인 내용들로 시작하면서 어렵지 않게 느끼게 해 주었다.

 

또한 기초를 보고 있는 나 자신이 많이 부족하다고 느낀다면 그건 당연한 것이라 생각한다.

어찌 보면 제너럴 한 개발자의 길보다는 험난함이 예상되지만 그만큼 돌아오는 베너핏이 다르리라.

 

가는 길이 힘들 땐 선배들의 명언이 힘을 줄 것이다.

막연하게나마 아키텍처에 대한 관심이 있는 자들이여. 꼭 이 책으로 시작해보라.

본인도 꼭 완독 할 테니!!

 

 

입문부터 실제 운용까지, 필요한 기술 총망라!

마사야 아오야마 지음 / 박상욱 옮김

"길벗 개발자 리뷰어 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

10월, 정기적인 리뷰어 활동 외에 추가로 길벗 출판사 리뷰어 활동에 선정되어 리뷰를 남기게 되었다.

최근에 쿠버네티스 모범 사례 리뷰도 남겼는데 비슷한 주제의 책을 동시에 쓰게 되다니...

 

일단, 쿠버네티스란 무엇인가? (지난주에도 쓴 말 같은데...)

https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/

 

쿠버네티스란 무엇인가?

쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하

kubernetes.io

쿠버네티스는 컨테이너화 된 애플리케이션의 배포, 확장 등과 같은 관리를 자동화하기 위한 플랫폼이다.

시스디그(Sysdig)가 공개한 Report에 따르면 컨테이너 오케스트레이션 엔진 시장 점유율에서 쿠버네티스가 77%를 차지한다고 한다.

쿠버네티스는 사실상 오케스트레이션 엔진 분야에서 표준이 되었다고 할 수 있으며, 앞으로 클라우드 네이티브 환경에서의 개발이 더욱 보편화되면서 반드시 사용해야 하는 플랫폼이 될 것이다.

 

쿠버네티스는 인프라 엔지니어와 애플리케이션 개발자 사이에 위치하는 소프트웨어로서, 이 책은 애플리케이션 개발자가 사용할 만한 쿠버네티스의 기능 전반을 다루고 있다.

또한 CKA / CKAD 라는 쿠버네티스 자격증에 대해서도 설명하고 있으니, 책을 학습한 후에 자격증도 꼭 취득해 보도록 하자.

 

이 책은 쿠버네티스를 한 번도 경험하지 못한 분들도 개념을 이해하고 실제 애플리케이션을 컨테이너화하여 실행할 수 있는 수준까지 실력을 끌어올리는 것을 목표로 하고 있다. 이 책을 끝까지 읽고 나면, 쿠버네티스를 실제로 도입하거나 쿠버네티스의 여러 에코시스템을 이해할 수 있을 것이다.

 

책의 총 페이지는 848페이지로 방대한 양을 자랑하며, 285개의 그림과 312개의 예제 매니페스트로 체계적으로 설명하고 있다.

 

이 책의 예제 매니페스트는,

https://github.com/MasayaAoyama/kubernetes-perfect-guide

 

GitHub - MasayaAoyama/kubernetes-perfect-guide: 『Kubernetes完全ガイド』の付録マニフェストのリポジトリ / "

『Kubernetes完全ガイド』の付録マニフェストのリポジトリ / "Kubernetes perfect guide" sample manifest repository - GitHub - MasayaAoyama/kubernetes-perfect-guide: 『Kubernetes完全ガイド』の付録マニフェストのリポジト

github.com

https://github.com/MasayaAoyama/kubernetes-perfect-guide/tree/ko/2nd-edition

 

GitHub - MasayaAoyama/kubernetes-perfect-guide: 『Kubernetes完全ガイド』の付録マニフェストのリポジトリ / "

『Kubernetes完全ガイド』の付録マニフェストのリポジトリ / "Kubernetes perfect guide" sample manifest repository - GitHub - MasayaAoyama/kubernetes-perfect-guide: 『Kubernetes完全ガイド』の付録マニフェストのリポジト

github.com

상기 github에서 다운로드할 수 있으니 꼭 방문해보길 바란다.

 

최근 클라우드 네이티브라고 하면, 그 중심에 컨테이너, 컨테이너 오케스트레이션 도구를 도입하는 것이 일반화되었다.

 

본인 역시 회사에서 GCP와 Azure 환경에서 개발을 진행하고 있다 보니 쿠버네티스를 이용하여 배포를 진행하고 있다.

 

쿠버네티스라는 단어만 많이 들어봤지 실제로 활용은 많이 못해봤기 때문에 공부를 시작하는 것 자체도 어려움이 많다.

이 책은 기초부터 체계적으로 익힐 수 있도록 구성이 되어 있으니, 책을 통해 쿠버네티스를 비교적 쉽게 익히고, 실제 서비스 환경에 접목시켜 애플리케이션을 배포하고 운영해보면 학습이 더 효율적일 것이다.

 

일단 목차를 살펴보자.

1장 도커 복습과 Hello, Kubernetes

2장 왜 쿠버네티스가 필요할까?

3장 쿠버네티스 환경 선택

4장 API 리소스와 kubectl

5장 워크로드 API 카테고리

6장 서비스 API 카테고리

7장 컨피그 & 스토리지 API 카테고리

8장 클러스터 API 카테고리와 메타데이터 API 카테고리

9장 리소스 관리와 오토 스케일링

10장 헬스 체크와 컨테이너 라이프사이클

11장 메인터넌스와 노드 정지

12장 유연한 고급 스케줄링

13장 보안

14장 매니페스트 범용화 오픈 소스 소프트웨어

15장 모니터링

16장 컨테이너 로그 집계

17장 쿠버네티스 환경에서의 CI/CD

18장 마이크로서비스 아키텍처와 서비스 매시

19장 쿠버네티스 아키텍처의 이해

20장 쿠버네티스와 미래

21장 부록

 

목차만 봐도 방대하다. 실무를 담당하고 있는 개발자라면 필요한 부분의 목차만 찾아서 공부해도 될 정도로 구분이 잘 되어 있다.

 

본문의 일부를 보자.

인그레스 컨트롤러 배포

본 책에서 쿠버네티스 기능 소개는 GKE 기준으로 설명되어 있지만, 다른 쿠버네티스에서도 충분히 적용 가능하다.

- GKE : Google Kubernetes Engine

- AKS : Azure Kubernetes Service

- EKS : Elastic Kubernetes Service

 

본문을 보면 그림과 그에 해당하는 설명들로 구성되어 있고, 순서가 잘 적혀 있기 때문에 그대로 따라 하면서 이해하고 적용이 가능하다.

그리고 챕터가 끝나면 챕터에 대한 정리를 해주기 때문에 한번더 이해하고 복습할 수 있다.

 

본인은 아직 이 책을 다보진 못하고 일부일부만 보고 있지만, 언젠가는 꼭 정독해서 실무에 적용하고 자격증도 따겠다는 목표가 생겼다.

 

쿠버네티스 실무자가 되기 위한 필독서!

애플리케이션 개발자도 당연히 도커를 알아야 하는 시대가 온 것처럼, 쿠버네티스도 보편화가 될 것이라는 것은 부정할 수 없는 사실이다.

현재 개발 기술에만 안주하지 말고 이 책을 꼭 완독하여 기회가 왔을 때 잡을 수 있는 개발자가 되도록 하자!!

쿠버네티스 창시자가 알려주는 최신 쿠버네티스 개발 및 배포 기법

 

브랜던 번스, 에디 비얄바, 데이브 스트레벨, 라클런 이븐슨 지음 / 장정호 옮김

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

10월, 나는 리뷰어다 활동의 9번째 리뷰.

(8번째 리뷰는 완성하지 못하여 비공개입니다. 흙흙)

 

여차저차하여 쿠버네티스 모범 사례 책을 받게 되었다. 회사는 Azure 클라우드 환경에서 개발 및 배포를 진행하기 때문에 쿠버네티스 파이프라인 구성이 굉장히 중요하다. 본인은 아직 주니어기 때문에 쿠버네티스 구성을 직접 한다거나 수정하는 등의 중책을 맡고 있지는 못하지만, 그래도 어떻게 굴러가는 건지는 알아야 할 것 같아서 신청하였다.

 

일단, 쿠버네티스란 무엇인가?

https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/

 

쿠버네티스란 무엇인가?

쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하

kubernetes.io

쿠버네티스는 컨테이너화워크로드서비스를 관리하기 위한 이식성이 있고, 확장 가능한 오픈소스 플랫폼이다. 쿠버네티스는 선언적 구성자동화를 모두 용이하게 해 준다. 크고, 빠르게 성장하는 생태계를 가지고 있다. 쿠버네티스 서비스, 기술 지원 및 도구는 어디서나 쉽게 이용할 수 있다.

-----

좋은 것 같긴 한데 도통 뭐라는건지 전혀 모르겠다. 회사 프로젝트가 쿠버네티스를 이용하고 있음에도 이런다. 그나마 도커는 조금 알고 이해하고는 있지만 ...

 

그럼, 쿠버네티스가 왜 필요하고 무엇인지 알아보자.

- 서비스 디스커버리와 로드 밸런싱

- 스토리지 오케스트레이션

- 자동화된 롤아웃과 롤백

- 자동화된 빈 패킹(bin packing)

- 자동화된 복구(self-healing)

- 시크릿과 구성 관리

---

역시 잘 모르겠다. 하하하하하하...

 

쿠버네티스가 더 궁금하다면 조대협님이 블로그를 정독하도록 하자.

https://bcho.tistory.com/1255

 

쿠버네티스 #1 - 소개

Kubernetes #1 - 소개 조대협 (http://bcho.tistory.com) 배경 도커와 쿠버네티스를 알게 된건 수년전인데, 근래에 들어서 다시 쿠버네티스를 보기 시작하였다. 컨테이너 기반의 환경은 배포에 장점이 있고

bcho.tistory.com

자 그럼 이 책에 대해서 알아보자. 이제 본론이다.

옮긴이의 말을 보면, 이 책을 통해 15년 이상 쌓아온 구글의 노하우를 터득할 수 있다고 한다. 쿠버네티스는 자유도가 높기 때문에 제대로 활용할 방법을 찾는 것에 많은 시간과 노력이 든다고 한다. 쿠버네티스의 창시자인 브렌던 번스가 다양한 실무자를 도우며 경험한 내용을 담았으며 초보 실무자는 물론 경험이 많은 프로 실무자에게도 꼭 필요한 책이라고 한다.

 

책의 구성을 보자.

각 장은 독립적인 형태로 구성되어 있으며 각 장은 쿠버네티스에서 수행하는 특정 작업에 대한 전반적인 개요와 같으므로, 특정 주제를 배우고 싶거나 관심사가 생겼을 때 찾아서 읽으면 더 효율적이다.

 

사실 쿠버네티스는 클라우드 네이티브 개발의 사실상 표준으로, 애플리케이션을 더 쉽게 개발하고 빠르게 배포하고 안정적으로 운영하도록 돕는 강력한 도구이다. 이 책은 쿠버네티스를 소개하는 책이 아니며, 독자가 기본적인 쿠버네티스 API와 도구와 친숙하며 쿠버네티스 클러스터를 생성하고 상호작용하는 법을 안다고 가정한다. 아무튼 쿠버네티스에 관심 있는 사람이 보기에 참 좋은 책이라는 이야기다.

 

CONTENTS

1. 기본 서비스 설치

2. 개발자 워크플로

3. 모니터링과 로깅

4. 설정, 시크릿, RBAC

5. 지속적 통합, 테스트, 배포

6. 버전, 릴리스, 롤아웃

7. 글로벌 애플리케이션 분산과 스테이지

8. 리소스 관리

9. 네트워킹, 네트워크 보안, 서비스 메시

10. 파드와 컨테이너 보안

11. 클러스터 정책과 거버넌스

12. 다중 클러스터 관리

13. 외부 서비스와 쿠버네티스 통합

14. 쿠버네티스에서 머신러닝 실행하기

15. 고수준 애플리케이션 패턴 구축

16. 상태와 스테이트풀 애플리케이션 관리

17. 어드미션 컨트롤과 권한

18. 결론

 

CONTENTS를 보면 실무자가 어려움에 처했을 때 케이스를 쉽게 찾을 수 있도록 구성되어 있다.

배포를 할 때 문제가 발생하였다면 5번 CONTENTS를 먼저 참고하고, 책 뒤에 있는 INDEX를 참고하면 될 일이다.
(사실, 그전에 갓글 검색 먼저 하겠지만 말이다.)

 

5장 지속적 통합, 테스트, 배포

책을 보면 명령어와 함께 순서대로 설명을 잘해주기 때문에 그대로 따라 해 보면 바로 적용해 볼 수 있다.

게다가 각 챕터의 끝에는 모범 사례를 말하지만 꿀팁을 제공하고 있는 부분이다.

5.10 CI/CD 모범 사례

5장에서는 CI/CD 파이프라인이 쿠버네티스에 애플리케이션을 전달할 때 위험을 줄이고 처리 속도를 높이는 역할을 하는 부분에 서술하였고, 배포 전략까지 다루고 있다.

 

참말로, 현재 쿠버네티스를 다루고 있는 실무자라면 바로 적용해 볼 수 있는 부분들이 많아서 큰 도움이 된다.

 

본인은 아직 이 책의 전부를 읽어보진 않았고, 필요한 부분만 발췌해서 보고 있지만 앞으로 사전처럼 자주 볼 책임이 분명하다.

언젠가는 쿠버네테스에 관련해서도 블로깅 해보리라 다짐한다.

(현실은 시작한 시리즈가 없지만!!)

 

오늘도 괴발개발 코드 몽키는 조금 더 똑똑한 코딩을 하려 하고 있다.

우분투, 데비안, CentOS, 페도라 대응

가와구치 히로시, 다야 후미히코, 미사와 아키라 지음 / 서수환 옮김

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

8월, 나는 리뷰어다 활동의 7번째 리뷰.

 

최근 계속 SQL 관련 책만 신청하다가, 이번 리스트에 리눅스가 보이기에 얼른 신청했다.

회사 프로젝트가 AzureGCP 같은 클라우드 환경에서 개발을 하다 보니 아무래도 리눅스가 많이 부족함을 느낀다.

하지만 본인이 누구인가? 무려 리눅스 마스터 자격증이 있는 개발자가 아니던가?

(아.무.의.미.없.습.니.다. - 자격증과 실무는 정말 큰 연관관계가 없습니다.)

 

클라우드 컴퓨팅이 발전하면서 CLI 명령어에 대한 필요성이 더 중요해져 가는 시기다.

GUI가 다 보여줄 수 없는 수준 높은 기능을 제공하는 것이 바로 리눅스다.

On-premise에서 Cloud로 빠르게 변화 하는 세상이고, Cloud는 리눅스가 필수이다!!

제발 리눅스 공부하세요 여러분!!

 

보통의 개발자들은 Git Bash를 통해 리눅스 커맨드를 사용하게 된다.

혹은 mac을 사용하는 분들은 기본적으로 리눅스 환경이 구축되어 있어서 Terminal을 통해 나도 모르게 명령어를 사용하고 있을 것이다.

CLI 명령어에 익숙해지고 조합하다 보면 점점 더 능숙하게 사용하게 되고, 일도 편하게 할 수 있다.

 

지금까지, 리눅스의 중요성에 대해서 열심히 떠들었으니!

"리눅스 입문자를 위한 명령어 사전" 책에 대해서 살펴보자.

(이때만 해도 "훗! 나는 입문자는 아니라구!" 라고 생각했었지...)

 

이 책의 저자 일동이 말하기를,

이 책은 수많은 명령어를 기계적으로 소개하는 대신에 평소에도 쓰는 유용한 명령어를 선발해서 사용 목적별로 정리했다고 한다.

그렇다. 리눅스 마스터 자격증을 보면서 공부했지만 머리에 남는 게 진심으로 없다. 오히려 실무 하면서 그때그때 구글링 하면서 사용했던 명령어들이 기억에 더 오래 남는다. 그렇게 익힌 명령어들은 아직까지도 쓰고 있다. 

 

그리고, 명령어 사용법을 '입문 편' 과 '참조 편'으로 나워서 처음 사용해보는 사용자나 중급자들도 다양하게 이용 가능하도록 구성되어 있다.

사실 리눅스의 수많은 명령어들을 다 외우는건 불가능하다. 적어도 나는 그렇다.

"입문 편" 과 "참조 편" 은 이렇게 구성되어 있어요!

명령어를 외우려고 하기 보다는 자연스럽게 사용하면서 익숙해지면서 이럴 때는 이런 걸 사용하는구나, 사용했구나 라는 것을 생각할 수 있을 정도로만 알면 될 것 같다. 정확한 명령어는 구글이 다 찾아주니까! 그러니 처음 이 책을 볼 때는 가볍게 1회독을 하는 것을 추천한다. 자세히 보며 공부하기보다는 느낌만 알아 가는 정도로~

 

본문 내용을 보자.

파일을 찾아보자.

파일을 찾는 챕터다.

눈에 보이는 것처럼 명령어들은 어려운 영어단어는 없다. find 명령어를 통해 디렉터리 ~ 아래에 있는 모든 파일과 디렉터리를 대상으로 하며, 파일 이름이 cocktail인 파일을 찾아 -print 즉 화면에 파일의 위치를 출력하라는 뜻이다.

 

어떤가? 굉장히 쉽지 않은가? 형식과 조합에만 익숙해지면 원하는 명령어를 수십 수백번 쳐보면서 자연스럽게 익히고 원하는 결과를 더 효율적인 방법으로 찾아낼 수가 있다.

 

결국 리눅스란 내가 하고자 하는 행위의 영어단어와 형식, 그리고 조합으로 원하는 결과물을 만들어 가는 과정이다.

생각했던 바를 명령어를 통해서 결과물을 뽑아내면 그 순간의 희열은 짜릿하다.

 

다시 한번 강조하지만, 개발 환경은 지속적으로 클라우드 컴퓨팅이 기본이 되어 가고 있다.

개발자로서 공부해야 할 것이 너무나 많지만, 리눅스는 놓치지 말자.

(리눅스 하다 보면 네트워크에 대한 이해도 생긴다!!)

 

나와 같은 주니어 개발자들은, 육하원칙의 6처럼 꼭 배워야 하는 6가지가 있다.

알고리즘 / 자료구조 / 네트워크 / 운영체제 / 데이터베이스 / 리눅스

 

하나하나 정복해 가며 인정 받는 개발자가 되도록 하자!!

팀 생산성을 높여주는 21가지 도구와 서비스

이기곤 지음

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

7월, 나는 리뷰어다 활동의 6번째 리뷰.

 

4월에 스타트업은 아니지만 내 기준에는 스타트업처럼 보이는 회사로 이직을 하게 되면서 다양한 툴과 직면하게 되었다.

당장 Jira로 issue tracking에 적응해야 했고, Confluence에 기록을 남기는 습관을 들여야 했다.

 

MS Teams와 G suite 사용도 함께 해야 해서 처음 며칠간은 툴의 늪에서 허덕였던 것 같다. 그러던 와중에 나는 리뷰어다 활동 선택지에 모던 스타트업이 보였고, 거침없이 빠르게 선택을 했다. 역시 필요에 의해 책을 선택하는 것만큼, 절실한만큼 효과적일 수밖에 없다.

 

모던 스타트업은 작은 크기와 두께를 보여주지만, 묵직함을 안겨준다. 이 쪼그만 책이 페이지 수가 300이다.

팀 생산성을 높여주는 21가지 도구와 서비스에 대한 책이다 보니, 절대적인 페이지 수는 필수적이지 않을까 생각한다.

 

그럼 그 21가지가 무엇인지 나열해보자.

 

Part 1. 조직 관리

1. 비즈니스 플랫폼 : G 스위트

2. 파일 관리 : 드롭박스

3. 커뮤니케이션 서비스 : 슬랙

 

Part 2. 프로젝트 관리

4. 이슈 관리 : 지라

5. 코드 관리 : 깃허브

6. 디자인 협업 : 제플린

7. RESTful API 개발 플랫폼 : 포스트맨

8. 지속적 통합 및 배포 : 트래비스 CI

9. 시간 관리 : 레스큐타임

 

Part 3. 인프라 관리

10. Iaas : 아마존 웹 서비스

11. 인스턴스 가상화 : 도커

12. 서비스 통합 : 재피어

13. 설정 자동화 : 앤서블

 

Part 4. 서비스 운영

14. 로그 수집 시스템 : 페이퍼트레일

15. 충돌 감지 및 보고 : 크래시리틱스

16. 웹 서비스 성능 모니터링 : 핑돔

17. 서버 애플리케이션 성능 분석 : 뉴렐릭 APM

18. 자원 모니터링 : 자빅스

 

Part 5. 그로스 해킹

19. 소셜 미디어 관리 : 버퍼

20. 마케팅 플랫폼 : 위시폰드

21. 데이터 분석 : 구글 애널리틱스

 

목차 중에 파란색은 현재 지금 회사에서 이용 중인 툴 혹은 서비스이며, 노란색은 비슷한 성격의 다른 제품을 이용 중이다.

생각보다 많은 것들을 사용하는구나?라고 생각할 수도 있지만, 경험상 이 정도는 사용해줘야 기본은 되어 있구나라고 생각할 수도 있다.

물론 본인도 IT회사에의 커리어 기간이 긴 것은 아니지만 관심이 많아서 여기저기 눈여겨보고 있기에 대강의 흐름은 파악하고 있다.

 

모던 스타트업 - 즉 하나의 회사를 운영하기 위해서 필요한 것들이다.

본인은 백엔드 개발자이지만 다양한 직군의 동료들과 협업을 하기 때문에 이러한 툴이나 서비스에 대한 이해가 있어야 한다.

백엔드 개발자 이기 때문에 프로젝트 관리나 인프라 관리 그리고 서비스 운영에 대해서는 잘 알고 있어야 장애에 대처할 수가 있다.

 

이 책은 서비스 자체를 처음 사용하는 사람을 대상으로 했기 때문에, 사용에 대한 깊이가 있는 편은 아니다.

사실 책에서 알려준다고 해도 그거 그대로 다 기억하기도 어렵고, 사용하면서 궁금한 부분을 검색하면서 알아가는 게 습득이 가장 빠르다.

 

가장 필요한, 가장 효율적인, 그리고 가장 기본이 되는 도구들과 서비스들에 대해 이해를 돕기 위해 정리가 잘 된 책이라고 생각한다.

크기도 작으니 본업은 본업 시간에 하고, 모던 스타트업은 출퇴근하면서 술술 읽어보면 금방 보게 될 것이다.

 

책 한 권 완독 하는 게 쉽지 않은 본인도 본 책이나 다른 분들도 쉬이 읽히리라 생각이 된다.

IT업계에서 일하는 사람이라면, 스타트업을 꿈꾸는 사람이라면 꼭 읽어보도록 하자.

 

조직/프로젝트 관리에서 개발, 운영, 마케팅까지

 

- 오늘도 낙성대 아지트에서 리뷰를 쓰고 코딩을 하는 주니어 백엔드 개발자 - 

Oracle, MSSQL, MariaDB 기반 실습환경

김상형 지음

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

6월,

나는 리뷰어다 활동의 5번째 리뷰.

 

개발자에게 SQL이란 불가분의 관계인 것 같다.

전통적으로 SQL은 RDBMS에서 다뤄져 왔고, SQL은 대용량의 복잡한 데이터를 조작하고 관리하는 표준 스크립트 언어이다.

 

적어도 BackEnd 개발자라면 DB를 컨트롤하기 위해서 SQL문을 보거나 작성해 보았을 것이다.

 

하지만 SQL이라는 것이 기본적인 문법을 익히고 나면 , 그 후에는 직접 개발하면서 맞춰가거나, 소속된 회사의 코딩 스타일을 따라가기 마련인 것 같아 좀 더 공부에 소홀해지는 것 같다.(굉장히 개인적인 입장입니다!!)

 

그.래.서.

이번 리뷰 신청도 SQL 관련 문서를 하게 되었다.

 

이 책은 특정 기업의 DBMS 제품이나 개발툴이 아닌 SQL 언어 그 자체를 중점적으로 다루고 있다. 표준화된 SQL에 집중하고 있는 만큼 각 기업별 DB나 개발툴은 금방 익숙해질 수 있다.

라고 저자는 이야기 하지만 사실 SQL이라는 것이 쉬운 것이 아니다. 연습도 많이 해봐야 하고 실전에서도 많은 시행착오를 겪어야 한다.

 

SQL에 집중한 본 책의 목차를 보자

1장 데이터베이스

2장 오라클

3장 SQL Server와 MariaDB

4장 SELECT

5장 데이터 집계

6장 데이터 관리

7장 제약

8장 모델링

9장 서브쿼리

10장 조인

11장 함수

12장 뷰

13장 분석과 통계

14장 테이블 관리

15장 제어문

16장 프로시저

17장 커서

18장 트리거

19장 트랜잭션

부록

 

으로 구성되어 있다.

여타 SQL 도서들과 목차는 크게 다르지 않다.

사실 실무에서는 10장 조인까지만 잘 사용할 줄 알아도 개발에 큰 어려움이 없다고 생각한다.

그 뒤에 것들은 백엔드 개발자보다 DBA 분들이 알면 더 좋을? 필요한? 챕터라고 본인은 생각하지만 개발 쪽에 커리어를 쌓아가면서 불필요한 것들은 없다.

하나라도 더 알면 개발의 선택지가 더 늘어나는 것이기 때문에 공부해서 나쁠 것은 없다. 결국 성능 이슈로 귀결되니까...

 

책의 분량은 무려 700 페이지에 달하는데, 아무래도 오라클, MSSQL, MariaDB를 같이 다루기 때문에 분량이 조금 더 늘어난 느낌은 있다. 하지만 독자가 필요한 부분만 확인하면서 공부하면 진도는 더 빨리 나갈 것이다.

 

이 책은 모태 사이트에서 출발을 했다. 소프트웨어 공학 연구소에서 실습에 필요한 파일과 추가 강좌, 정오표 등을 제공하고 있으니 꼭 확인하도록 하자.

http://www.soen.kr/book/sql

 

SoEn:소프트웨어 공학 연구소

 

www.soen.kr

SQL은 기본을 잘 잡아놓으면 결국 실무에서 활용 및 응용하는 단계에서 빛을 발한다.

"김상형의 SQL 정복" 을 통해서 SQL을 정복하고, 데이터베이스 동작에 대한 이해를 더 키우는 개발자가 되도록 하자.

형광펜 내가 칠한거 아니다.

알고리즘 설계 캔버스를 작성하며 배우는 알고리즘 문제 해결 전략

 

윤대석 지음

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

벌써, 5월.

이번 나는 리뷰어다 활동 책은 윤대석 님의 쓰면서 익히는 알고리즘과 자료구조이다.

 

4월에 이직 후에 전혀 신경을 못 쓰고 있다가 마감날이 가까워졌다는 걸 인지하고 부랴부랴 책을 폈다.

 

개발 공부를 하면서 모든 사람들이 알고리즘과 자료구조는 기본적으로 공부를 해야 하는 과목이라고 이야기를 한다.

하지만 이 시점에 내가 궁금한 건, 그렇게 말씀하신 본인들은 알고리즘과 자료구조 공부를 제대로 하셨나이까?

(나라는 사람이 그랬다. 중요하다 생각하고 주위에도 그렇게 이야기하면서 정작 나 자신은 그.러.질. 못했다. 죄송합니다 주위분들!)

 

학교를 다니면서 수강 과목으로 소화하긴 했지만 과제와 시험에 치중된 부분 위주의 공부로 인해 머릿속에 깊게 남은 것이 없다.

 

여러 단어들의 반복적인 나열이었을 뿐...

 

그래서 이번에 5월 리뷰 도서는 꼭 봐야지 라는 생각으로 신청했지만, 역시나 다 보지 못했다.

하지만 시간이 걸리더라도 완독은 분명히 할 것이다.

(어디 가서 개발자 인양 이야기를 하려면 뭐가 뭔지 명칭이라도 알아야지!!)

 

지은이가 말하는 알고리즘 공부란 본인의 역량이 월등히 발전했다고 체감하기 힘들고, 동기부여가 상대적으로 부족할지도 모른다고 이야기한다. 사실 본인도 공감하는 바였다. 최근에도 더 실무에 가까운 스프링에 대한 깊이와 JPA 활용에 대한 공부를 하고 있고, 클라우드에 대한 리서치를 진행하는 중이기 때문에, 알고리즘이란 마치 정보처리입문과 같은 너무나도 이론적이고 개론적인 학습이라 생각했기 때문이다.

 

하지만.

날아다니는 개발자와 보통의 개발자들의 차이는 알고리즘에서 차이가 난다.

보통의 개발자들은 필요한 기능을 구현해 내는 것이 목적이지만,

날아다니는 개발자는 그 속에서 문제를 찾아내고, 개발 품질 향상에 큰 기여를 할 수가 있다.

 

아직 주니어 개발자들에게는 크게 와닿지 않을 수도 있겠다.

머리로는 필요성을 느끼겠지만 그들 역시 실무에 치중된 공부를 하고 있을 테니...

 

하지만 모두가 인정하는 한 가지는,

유명한 IT 기업들은 알고리즘을 필요로 하는 코딩 테스트를 진행한다.

코딩 테스트를 통과하지 못하면 유명한 회사에 입사할 수 있는 가능성이 현저히 떨어진다는 이야기다.

 

그.만.큼!

알고리즘과 자료구조는 굉장히 중요한 공부이다!

 

그럼 이제 책을 살펴보자.

이 책은 독특하게 노트 레이아웃을 이용한다. hiredintech 사이트에서 제공하는 알고리즘 설계 캔버스를 보자.

 

https://www.hiredintech.com/courses/algorithm-design

 

HiredInTech's Training Camp for Coding Interviews

Algorithm Design for Tech Interviews Ace the Tech Interviews This course prepares you for the algorithmic problems at your tech interviews. The course covers several algorithmic areas. For each area you will find introductory theoretical lessons and a set

www.hiredintech.com

이 레이아웃을 활용하면 문제 해결 과정에서 실수할 수 있는 부분을 줄일 수 있을 것이라고 한다.
자세한 내용은 사이트 및 본 책을 꼭 보고 확인하도록 하자.

 

책은 자료구조와 알고리즘을 분류하여 구성되어 있다. 코드는 파이썬으로 만들어졌고, 필요한 라이브러리 호출에 대한 설명도 있다.

(고로, 코딩을 많이 접해보지 못한 분들은 파이썬에 대한 공부를 1회전은 하고 이 책을 보시는 게 좋겠다!)

 

챕터는,

1장 - 배열 (Array)

2장 - 문자열 (String)

3장 - 연결 리스트 (Linked List)

4장 - 스택 (Stack)과 재귀 (Recursion)

5장 - 큐 (Queue)

6장 - 트리 (Tree)

7장 - 동적 프로그래밍 (Dynamic Programming)

 

총 7장으로 구성되어 있고, 이 책을 학습하고 나면 온라인 코딩 사이트의 easy, medium 난이도 수준의 문제는 어느 정도 접근이 가능하다고 말하고 있다.

 

그리고 가장 중요한 것은, 총 387 페이지로 구성되어 있다는 것이다.

본인은 개발 공부를 하면서 나름 방법 아닌 방법이 있다.

어떤 새로운 분야에 대한 공부를 시작하고자 한다면, 시중에 나와 있는 책들 중에 가장 페이지수가 작은 책을 산다.

(물론 한빛미디어 급의 출판사 네임밸류는 있어야 한다.)

그렇게 책을 1회전 한 후에, 더 공부가 필요하다 싶으면 그때 좀 더 두께가 있는 책을 사전처럼 활용하는 편이다.

 

시중에 나와 있는 알고리즘과 자료구조 관련 책중에 이 정도 두께는 얇은 편은 아니지만, 충분히 독파가 가능한 페이지다.

물론 더 페이지수가 적고 보기 편한 책들이 있겠지만, 한빛미디어를 믿어보자.

 

그리고 필자의 중요한 말이 있다.

"어떤 학습이든 너무 쉽거나, 너무 어렵게 느껴진다면 현재 자신의 위치를 다시 파악할 필요가 있다. 억지로 학습을 이어가다 흥미를 잃어버릴 수 있다는 점을 명심하자."

 

굉장히 공감한 말이다. 개발자 몇 년 차라는 껍데기에 숨겨진 현재 자신의 위치를 아는 것이 굉장히 중요하다.

 

여러분들 모두, 이 책을 보고 공부하면서 지금 내가 어느 위치에 있는지 알았으면 좋겠다.

(본인도 대충 예상은 되지만 어느 위치에 있는지 알아가 보도록 하겠다 ㅠㅠ)

 

쓰면서 익히는 알고리즘과 자료구조를 통해 스스로 발전하는 나 자신을 발견하도록 하자.

 

오늘도! 내일도! 파이팅!

항상 오렐리 / 한빛미디어 도서는 포스가 있다.

데이터 생성, 검색, 조작까지 데이터 제대로 주무르기

 

앨런 볼리외 저 / 류수미, 송회정 역

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

4월의 나는 리뷰어다 활동 책은 앨런 볼리외의 Learning SQL이다.

 

개발자로 근무하면서 SQL 기본서들은 보았지만, 좀 더 깊은 내용의 책은 접해본 적이 없어서 이번 기회에 신청하게 되었고,

한빛미디어는 다행스럽게도 내게 이 책을 배송해 주었다. (항상 감사합니다! 한빛미디어!!)

 

언젠가부터 쿼리문을 작성하게 되면 예전에 작성했던 쿼리문을 보면서 조금씩 수정해 가면서 개발을 했다.

매번 이러면 안 되는데 라고 생각하면서도 시간에 쫓기다 보니, 우선 원하는 결과물을 만들어 놓고 나중에 다시 봐야지~라고 생각은 했건만.

 

사람이라는 게 직장인이라는 게 그게 참 쉽지가 않다.

아무튼 SQL과 책에 대해서 보도록 하자.

 

기본적으로 데이터베이스, 그리고 데이터를 다루는 것은 SQL이다.

전통적으로 SQL은 RDBMS에서 데이터를 다뤄왔다. 최근 NoSQL이 빅데이터와 더불어 크게 성장하면서 데이터를 다루는 것에 대한 관심이 크게 높아졌고, 전형적인 개발자가 아니라 하더라도 데이터를 다루는 것에 대한 학습 수요는 점점 커지고 있는 상황이다.

 

그리하여, 이번 리뷰에서 꼭 하고 싶었던 말은

 

"개발자가 아니더라도 데이터를 본인의 입맛에 맞게 다루고 싶다면 공부하세요. SQL"

 

이다. 단순히 SELECT문 한 번이라도 날려보면 데이터를 조작하고 싶은 흥미가 분명히 생길 거라고 확신한다.

 

책의 구성을 좀 보자.

옮긴이의 말을 보면 입문에 그치지 않고 고급 기능까지 다룬다고 한다.

그렇다.

시중의 책들, 특히 특정 데이터베이스를 다루는 법을 소개하는 책을 보면 입문 수준인 경우가 많고, 특히 MySQL을 좀 더 심도 있게 다루는 책은 많지 않다.

(개인 의견입니다. 분명히 좋은 책들이 많이 있겠죠 ^^;)

 

목차만 봐도 어느 정도 느낌이 온다. 총 18개 장으로 구성이 되어 있는데 9장까지는 보통의 책이 가지는 순서와 비슷하다 생각되지만,

 

10장 조인 심화

11장 조건식

12장 트랜잭션

13장 인덱스와 제약조건

 

등등..

 

기본 입문서에서는 깊게 다루지 않는 부분까지도 학습할 수 있고,

 

17장 대용량 데이터베이스 작업

18장 SQL과 빅데이터

 

챕터에서는 대용량 데이터베이스를 어떻게 다루는지에 대한 부분도 있다.

SQL의 기본부터 심화, 그리고 빅데이터에 대한 욕구까지도 다루고 있는 좋은 책이라는 이야기다.

 

 

또한 책의 예제에 사용된 데이터 실습을 위해서,

 

www.katacoda.com/mysql-db-sandbox/scenarios/mysql-sandbox

 

MySQL Sandbox | mysql-db-sandbox | Katacoda

Practice SQL queries on a MySQL server using the Sakila sample database

www.katacoda.com

의 시나리오도 제공하니, 본인의 로컬 컴퓨터에 MySQL을 설치하느라 끙끙대지 않아도 된다.

 

초기 세팅 완료 후 캡쳐

(macOS 기분의 캡처 화면입니다. 윈도우 OS는 조금 다를 수도 있을 것 같지만 아마 비슷할 것 같아요.)

 

하지만 개인적인 의견으로는 자신의 컴퓨터에 MySQL 서버를 설치해보길 추천한다.

(시간을 많이 뺏길 수도 있지만, 설치 과정도 공부에 분명히 도움이 된다고 생각해요.)

 

mysql 클라이언트를 통하여 명령어도 치고, 영타 속도도 늘리고 직관적인 데이터 조작법을 러닝 SQL을 통하여 공부하자.

 

그리고 중요한 부분은 아니지만, 페이지 내에 텍스트와 이미지의 배치가 가독성이 너무 좋다.

어떤 책들은 책을 열자마자 숨이 막히기도 하는데 이런 류의 책들이 내게는 더 잘 읽히는 것 같다.

 

그리고 매 챕터의 끝에 실습문제가 있으니 꼭 풀어보자. 개발이란게 맨날 책 본다고 늘지 않더라. 공부한 것을 활용하여 직접 개발해봐야 실력이 느는 것은 너무 당연한 말이다.

 

아직 책을 다 보진 못했지만 이 책은 어떻게든 끝까지 볼 것이다.

 

결론적으로!!

내게 러닝 SQL이란,

 

기본부터 잘 구성되어 있는 책이고, 생각 없이 컨씌컨븨 했던 지난날들의 반성과 왜 그렇게 했는지에 대한 이해를 제공해주는,

본인의 개발자 인생에서 SQL을 다루는 자세에 대한 부분을 많이 바꿔 준 좋은 책이다.

 

추천! SQL을 제대로 하고자 한다면 정말 추천하는 책입니다!!

서평 이벤트 당첨 - 루비페이퍼

파이썬 본질에 집중하다

BohYoh Shibata 지음 / 최하영 옮김

 

루비페이퍼 <파이썬의 정석> 서평 이벤트에 당첨되어서 작성한 서평입니다!!

 

요즘 공부하라는 하늘의 계시인가?!

 

한빛미디어 <나는 리뷰어다> 활동을 하고 있는 와중에, 루비페이퍼에 신청한 서평 이벤트에 당첨되었다. 무야호!!

 

안 그래도 루비페이퍼의 <스프링 퀵 스타트><스프링 부트 퀵스타트>를 아주 잘 보았기에 루비페이퍼 출판사에 대한 신뢰감이 있었다.

 

좋은 책을 보내주셨음에 감사 드리며 아직 다 보지는 못했지만 리뷰를 남기고자 한다.

 

먼저 내가 아는 파이썬 이란?

 

1. 다른 언어보다 배우기 쉬워서 진입장벽이 낮다고 한다.

2. 문법이 비교적 쉬운 편이지만 활용도가 굉장히 넓다.

3. 요즘 가장 인기가 많다.

4. AI 하려면 파이썬 해야 한다.

5. 스타크래프트 인기맵이다. (응?)

 

예전에 파이썬을 공부했던 적이 있다.

그때나 지금이나 주력 언어는 Java였기 때문에, 파이썬은 뭔가 순서대로 착착 흘러가는 느낌의 언어였다.

 

이 글을 보시는 분들은 파이썬이 뭔지는 아실거라 생각한다. 아니면 죄송하다.

 

그럼 저자가 말하는 파이썬의 특징을 보자. (그리고 제 의견을 좀 보태보겠습니다.)

 

- 오픈 소스 소프트웨어입니다 : 파이썬을 무료로 사용할 수 있고, 파이썬 자체를 볼 수도 있다는 이야기

- 멀티플랫폼입니다 : 다양한 os에서 원활하게 동작한다

- 각종 문서가 풍부하게 제공됩니다 : 공부하기에 좋다는 이야기

- 폭넓은 분야에 적용할 수 있는 범용 언어입니다 : 요즘 파이썬이 대세인 이유

- 다양한 프로그래밍 패러다임을 흡수하고 있습니다 : 프로그래밍 패러다임에 뒤처지지 않는다!!

- 스크립트 언어입니다 : 가독성이 좋고 비교적 간단하게 작성 및 수행이 가능함

- 라이브러리가 풍부합니다 : 다양한 분야를 프로그래밍 할 수 있다!!

- 프로그램의 실행 속도가 아주 빠르지는 않습니다 : 인터프리터 방식의 한계

- 배우는 것이 결코 쉽지만은 않습니다 : 뭐든 쉬운건 없습니다 여러분. 제대로 공부하고 이해하셔야 합니다.

 

프로그래밍을 처음 시작하시는 분이라면 이게 뭔말인지 영 감이 안 올 것이다.

하지만 파이썬의 정석을 통해서 프로그래밍이 무엇인지 파이썬이라는 언어가 무엇일지 점차 알게될 것이라 확신한다.

 

"파이썬의 정석"챕터를 보자

 

1. 파이썬 시작하기

2. 화면에 출력하고 키보드로 입력하기

3. 프로그램 흐름의 분기

4. 프로그램 흐름의 반복

5. 객체와 타입

6. 문자열

7. 리스트

8. 튜플 / 딕셔너리 / 집합

9. 함수

10. 모듈과 패키지

11. 클래스

12. 예외 처리

13. 파일 처리

부록

 

총 13개의 챕터와 부록으로 구성되어 있다.

아직 본인도 3년차 Java 개발자라서 깊이는 없지만 보통 프로그래밍 언어의 책의 구성의 순서와 크게 다르지 않다는 것 정도는 느낌적인 느낌이 온다. 그만큼 기본에 충실하면서 프로그래밍을 어떻게 하면 되는지를 보여주려는 저자의 의도가 살짝 보인다.

 

아니라면 직접 댓글 달아주세요 저자님?!! 아니면 역자님이라도!!

 

저자님이 서두에 몇번을 반복하시는 말이 있다.

 

"파이썬은 언뜻 쉬워 보이지만 알고 보면 깊이 있고 복잡한 언어입니다. 파이썬을 능숙하게 다루기는 절대 쉽지만은 않습니다."

 

-- 너무 공감이 되는 말이다. 본인도 Java를 처음 공부 할 때 자바의 정석으로 시작하였는데 정말 외계어였다.

프로그래밍 언어에 대해 지식이 전혀 없었고, 문과 출신 비전공자에게는 너무 높은 벽이었다.

하지만 학습이란 무엇인가? 읽고 이해하고 반복하면서 내걸로 가져가는 수밖에 없다.

 

파이썬을 시작하고자 한다면 빠르게 내걸로 만들겠다는 욕심보다는 프로그래밍에 대해 알아가면서, 프로그래밍을 파이썬이라는 언어로 해보자~! 라는 생각으로 접근해야 한다. 공부라는게 그렇다. 첨에 너무 욕심내서 무리하면 책이라는 물질은 책장으로 들어가서 안 나오기 마련이다. 

 

책의 일부분을 좀 보자.

그림 11-1. 클래스 인스턴스의 동적 변화

클래스에 대한 설명이다. 상단의 그림 왼쪽 부분만을 보면 kim. 을 제대로 이해하기 어려울 수도 있다.

하지만 오른쪽의 그림으로 인스턴스화로 생성된 인스턴스를 설명하여 이해를 돕고 있다.

(사실 더이상 쉽게 설명하기가 어렵다고 생각한다. 프로그래밍 처음 공부시작하신 분들은 이해하리라.)

 

프로그래밍 언어를 공부하면서 중요하다고 생각되는 부분이 많다.

 

본인은 그중에서도 순서도를 그리거나 생각하면서 해야 한다고 생각하고 있고, 자료구조메모리에 대한 이해도 중요하다고 생각한다.

파이썬의 정석은 그런 부분에서 강점을 가진다.

 

파이썬 언어만을 가르치는 것이 아니라 프로그래밍의 기본에 대한 부분에 많은 페이지를 할애하고 있다.

본 책 한권으로 파이썬을 완전히 마스터하긴 어렵겠지만, 다음 스텝으로 가는 중요한 디딤돌이 충분히 될만한 책이다.

 

저자도 맺음말에 보태듯이,

이 책에서는 제너레이터, 클래스의 응용, 응용 알고리즘, 스레드 프로그래밍등은 다루지 않았다고 했다.

그만큼 욕심을 내기 보다는 프로그래밍과 가까워 질 수 있도록 노력했다는 부분들이 많이 보인다.

 

프로그래밍의 경험이 있다면 좀 더 쉽고 편하게, 완전 초보자라도 쉽게 이해하면서 공부할 수 있도록 잘 만들어진 책이다.

 

역시 루비페이퍼는 나를 실망시키지 않는다.

최근에 JPA에 관심이 있어 공부하려 하는데 아무래도 채규태님의 JPA 퀵스타트도 봐야 할 것 같다. (루비페이퍼!! 보고 있죠?!!)

 

기대하지 않았던 기회로 책을 접했고, 재미나게 보는 중이다.

무려 632 페이지의 두꺼운 책이지만 무게는 굉장히 가볍다.

 

프로그래밍을 해보고자 하는 친구들이여!

괜히 파이썬이 멋있어 보이는 전우들이여!

 

도전하자. "파이썬의 정석"

REFACTORING

 

코드 구조를 체계적으로 개선하여 효율적인 리팩터링 구현하기

 

마틴 파울러 지음 / 개앞맵시, 남기혁 옮김 - 한빛미디어

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

이번에 리뷰 할 책은 리팩터링이다.

 

리팩터링 (refactoring) 이란?

소프트웨어 공학에서 '결과의 변경 없이 코드의 구조를 재조정함'을 뜻한다. 버그를 없애거나 새로운 기능을 추가하는 것은 아니며, 주로 가독성을 높이고 유지보수를 편하게 함을 뜻한다.

 

개발자로 일하면서 어느 정도 기간이 누적되다 보면 과거의 본인이 작성한 코드에 직면할 때가 있다. 이거 누가 작성한 코드야...?

아니 적어도 알아볼 수는 있게 해놔야 할 것 아냐?

 

다시금 보면 과거의 내가 작성한 코드를 알게 되고, 미래의 내가 오늘 작성한 코드를 보면서 똑같은 생각을 반복할 것이다.

 

리팩터링이란 용어가 프로그래밍 세계를 자리를 잡으면서 마틴 파울러의 리팩터링 책은 교과서처럼 꼭 읽어야 하는 도서가 되었다.

 

읽어 봐야지 생각만 하다가 한빛미디어 리뷰 목록에 나와서 재빠르게 캐치를 했고 정독을 다 해보지는 못했지만, 정독을 위한 리뷰를 남기고자 한다.

 

리팩터링 1판의 나이가 18살일 때 2판이 나왔다는 사실이 너무 대단하다. 그만큼 원서가 힘이 가득한 책이었고, 2판이 나오면서 시대의 흐름도 잘 반영했다는 생각이 든다.

 

다시 이야기 해보자.

리팩터링이란 무엇인가?

작가는 겉으로 드러나는 코드의 기능(겉보기 동작)은 바꾸지 않으면서 내부 구조를 개선하는 방식으로 소프트웨어 시스템을 수정하는 과정이라 한다. 버그가 생길 가능성을 최소로 줄이면서 코드를 정리하는 정제된 방법이다.

 

"리팩터링 한다는 것은 코드를 작성하고 난 뒤에 설계를 개선하는 일이다."

 

이게 무슨 해괴망측한 말인가? 다시 이해해보자.

리팩터링을 하면 잘못된 설계나 심지어 엉망인 설계를 가져다가 체계적으로 설계된 코드로 탈바꿈할 수 있다.

이대로 듣자니 쉬운 일이 아닌 것 같은 느낌이 든다.

 

하지만 이 책을 읽으면 생각보다 어렵지 않구나?라는 생각이 들 것이다.

 

한 클래스의 필드를 다른 클래스로 옮기고, 일부 코드를 메서드 밖으로 빼서 별도의 메서드로 만들고, 코드 일부를 상속 구조의 위/아래로 올리거나 내리는 등의 작업으로 충분히 가능하다.

 

어떤가? 흥미롭지 않은가?

 

개발자들이여. Kingsman의 Harry가 늘 하는 말이 있다.

"MANNERS MAKETH MAN"

 

본인이 작성한 코드는 또 언젠가 누군가에게 보이는 코드가 될 것이다.

그들이 알아보기 쉽게 작성을 하고 설계를 이해하기 쉽게 해주는 아름다움을 이 책을 통해 장착하자.

 

(두께가 만만치는 않다. 하지만 꼭 완독 해내자.)

 

REFACTORING

 

매너 있는 개발자에게 꼭 필요한 책이다.

+ Recent posts