켄트 벡의 Tidy First? 세트 - 전2권 - 더 나은 소프트웨어 설계를 위한 32가지 코드 정리법 O'reilly 오라일리 (한빛미디어)
켄트 벡 지음, 안영회 옮김 / 한빛미디어 / 2024년 4월
평점 :
장바구니담기


개요

한빛 미디어 서평단으로 “켄트 벡의 Tidy First” 의 서평을 하게되었다.

출간 소식을 듣고 서평단이 되지 않았더라도 읽어야지 했던 책이었다.

알라딘 링크: http://aladin.kr/p/cqor7

감상

감상, 밑줄, 생각을 적어둔다.

박성철님의 추천사

켄트 벡은 너무 미세해서 사람들이 종종 무시하는 ‘불안’이 소프트웨어 설계에 어떤 영향을 미치는지 간파합니다. p9

OOP, MSA, DDD 같은 거대 담론도 코드 정리에서 출발하지 않으면 그저 사변적인 것이 머물게 될 것입니다. p9

박성철님이 중용, 혹은 유교 경전을 읽어오시지 않았나 싶다. 유교의 말씀들이 떠올랐다.

  • 막현호은, 막현호미 - 숨은 것처럼 잘 드러나는 것은 없으며, 미세한 것처럼 잘 나타나는 것은 없다.
  • 행원자이, 등고자비 - 먼 곳을 갈 때에는 반드시 가까운 곳에서 시작해야 하고, 높은 곳을 오를 때에는 반드시 낮은 곳에서 시작해야 한다.

책의 구조

1부 코드 정리법: 코드를 정리하는 실제 방법들

2부 관리: 코드 정리는 작은 일이다. 특정 코드를 변경하려다 보니 하게 되는게 코드 정리이다.

3부 이론: 소프트웨어 설계에 대한 켄트 벡의 생각

1부. 코드 정리법

구체적인, 실제적인 것인 코드 정리법에서 책을 시작하여 점차 추상으로 나아가려 한다.

코드 정리는 리팩터링의 부분집합으로 보면 되겠다. 부담되지 않는 작고, 즐거운 작업

1장에서 15장까지 이야기하는 코드 정리의 방법들을 읽고 이해하고 사용하며 내 것으로 만들어두자.

2부. 관리

코드 정리는 괴짜의 자기 관리입니다. p69

2부의 목표는 코드 정리법을 개발 흐름에 자연스럽게 녹여 내는법이라 이해해본다.

켄트 벡은 이 책을 포함하는 3부작을 다음과 같이 구상하고 있다.

  • 1권(이 책): 코드 정리는 프로그래머 자신에게 초점을 둔 소프트웨어 설계이다. 코드와 프로그래머, 프로그래머 자신과의 관계를 다룬다.
  • 2권: 팀이 소프트웨어 설계를 함께 하는 방법과 이유
  • 3권: 개발자가 아닌 사람들과의 관계에서의 소프트웨어 설계와 그 역할

코드 정리(책에서는 구조 변경이라고도 한다)와 동작 변경은 별도의 PR로 처리한다.

코드 정리는 자꾸만 이어서 좀 더 하고 싶어지는 작업이다. 작은 정리를 순차적으로 해보자.

팀에 신뢰와 강력한 문화가 있다면 코드 정리 후에는 굳이 검토할 필요가 없습니다. 84

켄트 벡은 코드 검토(= 코드 리뷰로 보인다)에 대해 부정적인 것으로 보인다.

코드 정리는 한 시간을 넘지 않도록 하자.

코드 정리와 동작 변경을 뒤섞어 해버렸다면? 과감하게 지금까지 한 것을 버리고 코드 정리부터 다시 시작하자.

  • 정현석: 하나의 코드 리뷰를 마치고 이어서 다음 코드 작업을 해야한다는 부담감에 이렇게 잘 안하는 것 같다. 이 때문에라도 켄트 백이 코드 검토라는 단계에 대해 부정적인건 아닐까?

동작 변경과 코드 정리의 순서, 코드 정리의 시점은 무얼까? 정답은 없다. 상황에 따라 최적의 순서를 선택하자. 상황에 따라 1) 코드 정리를 하지 않거나 2) 정리를 미루거나 3) 동작 변경 후에 코드 정리를 하거나 4) 코드 정리부터 하고 동작변경을 할 수 있다.

3부. 이론

1부에서 코드 정리하는 구체적인 방법을 배웠고, 2부에서는 언제, 어떻게, 얼마나 하는지를 이야기했다. 3부에서는 왜 하는지 이유를 알아본다.

3부에서의 질문들

  1. 소프트웨어 설계란 무엇인가?
  2. 소프트웨어 설계와 소프트웨어 개발/운영 비용의 관계는 어떠한가?
  3. 소프트웨어 구조 변경 여부와 방법의 결정에 사용할 수 있는 경제적, 인간적 원칙

소프트웨어 설계란 무엇인가?

‘소프트웨어 설계의 의미’에 대해 ‘요소들을 유익하게 관계 맺는 일’ 이라고 말할 수 있습니다. p99 Software design is beneficially relating elements.

위와 같은 관점에서 소프트웨어 설계란 다음을 하는 것이다.

요소를 만들고 삭제합니다. 관계를 만들과 삭제합니다. 관계의 이점을 높입니다. p102

구조 변경(코드 정리)과 동작 변경은 모두 가치를 만들어내지만 근본적으로 가역성(되돌릴 수 있는가)이 있는가가 다르다. 둘 중 어느게 나은가가 아니라 둘을 어떻게 조화시키는 가가 중요하다. 동작 변경을 먼저 돈을 버는 것이고, 구조 변경은 옵션을 만드는 것이다.

소프트웨어 설계는 ‘먼저 벌고 나중에 써야 한다’와 ‘물건이 아닌 옵션을 만들어야 한다’는 두 가지 속성을 조화시켜야 합니다. p110

옵션

“다음에 어떤 동작을 구현할 수 있을까?”


이때까지 저는 지금까지 한 일에 대한 대가를 받고 있다고 생각했습니다. 하지만 실제로는 그렇지 않았습니다. 대부분은 다음에 할 수 있은 일에 대한 대가를 받고 있었습니다.


”다음에 어떤 동작을 구현할 수 있을까?” 라는 질문은 동작 후보 목록이 많을 수록 더 가치가 있습니다.최고의 교훈은 바로 이것입니다. 가치에 대한 예측이 불확실할수록 바로 구현하는 것보다 옵션이 지닌 가치가 더 커집니다. p115

이 책의 가장 핵심이 되는 지점이라 생각한다. 당장 돈이 될 것이라 생각하고 동작 변경을 열심히 하고 있는데 요구사항이 바뀐다면? 모두 날리고 새로이 코드를 짜야 한다. 하지만 다음에 할 수 있는 일이 많은 코드를 짠다면? 요구사항에 변화가 많은 상황에서 코드는 매우 높은 가치를 지니게 될 것이다. 그리고, 현대의 많은 요구사항들은 변화가 많다.

콘스탄틴의 등가성

  1. 소프트웨어에서 비용이란 전체 변경을 하는데 드는 비용이다.
    • 그런데 전체 변경 중에서 큰 변경들이 차지하는 비용이 대부분이다.
  2. 따라서, 소프트웨어에서 비용이란 큰 변경들의 비용이라 할 수 있다.
    • 그런데 비용은 결합도가 높을 수록 비용이 올리간다.
  3. 따라서, 소프트웨어에서 비용은 결합도가 높을 수록 올라간다고 볼 수 있다!
    • 따라서, 소프트웨어 비용을 줄이려면, 결합도를 줄여야 한다.

기타등등

번역에 대하여

켄트 벡이라는 이름은 도그마 까지는 아니라 하더라도 개발자들에게 그 무게가 결코 가볍지 않다.

그러다 보니 역자는 켄트 벡의 표현 하나, 의미 하나까지 놓치지 않고 최대한 반영하여 번역을 하려 노력한 것으로 보인다. 그 결과로 100 페이지 남짓의 이 책을 술술 읽히지 않는 지점들이 있다. 소설가 한강이 부커상을 받았는데 창작 수준으로 영어 번역된 지점이 논란이 된 적이 있었는데, 그러한 문학 작품이 아닌 개발서적이라면 책을 읽는 개발자 독자들에 좀 더 무게를 실어서, 읽고 이해하기 쉬운 글로 번역을 했으면 어땠을까 싶다.

링크에 대하여

옮긴이 노트의 주석에는 링크들이 나오는데 따라치기에 불가능한 수준이 많았다. 적어두기는 하는데 누가 이걸 타이핑해서 찾아보겠어? 라는 마음이었을까 싶은데, 그럼에도 불구하고 단축 URL과 같은 방식으로 제공했으면 어떠했을까 싶다.

번역에 대한 감사

기타등등에 싫은 소리를 적어 놓았지만, 옮긴이 노트라는 별도의 형식으로 번역과정의 에피소드와 역자의 소프트웨어 설계에 대한 생각을 나누어 주신 것에 감사한 마음이 들었다. 당장은 읽기 힘들다 불평했지만 저자의 생각을 하나라도 놓치지 않으려 노력한 번역이기에 꼼꼼히 곱씹으면 그 맛을 알 수 있는 번역이라 할 수 있을 것이다.

마무리

이 책은 켄트 벡이  “Helping geeks feel safe in the world (괴짜들이 세상에서 안전하다고 느끼도록 돕는다)”는 사명에 충실하려 살아온 고민이 녹아있는, 개발자라면 꼭 읽어야 할 책임에 틀림없다. 다음 시리즈의 책들이 나올때마다 정독, 재독을 할 것이고, 당장은 1부의 코드 정리법을 나만의 언어로 하나씩 정리해보려 한다.


"한빛미디어의 도서 지원을 받아 작성한 리뷰입니다.”



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
그림으로 공부하는 IT 인프라 구조 - 개정판 그림으로 공부하는 시리즈
야마자키 야스시 외 지음, 김완섭 옮김, 오다 케이지 감수 / 제이펍 / 2020년 12월
평점 :
장바구니담기


개요

제이펍 IT 전문서 리뷰어 활동 첫 서적으로 “그림으로 공부하는 IT 인프라 구조(개정판)” 을 리뷰해본다.

리뷰 동기

서비스, 애플리케이션을 만들어 세상의 요구사항을 만족시켜주는 개발이 있다면, 그렇게 만든 개발을 현실세계 속에서 지속적으로 살아 숨쉬게 만드는 인프라가 있다. 개발에 비해 상대적으로 재미없고 쉬워보이지 않는 인프라이지만 정말 개발자라면 놓칠 수 없는 주제이다. 개발자로 살아가며 직간접적으로 마주치는 인프라에 대하여 그 전반을 훑어주는 책이다 싶어 골랐다.

감상

중간 쯤 읽을 때까지의 감상은 일본 특유의 꼼꼼하고 친절한, 초급자를 위한 책이라는 느낌이었다. 인프라와 그 아키텍처 전반을 훑어보고, 물리적인 측면에서 서버 면면을 챙겨본다. 그리고 기본이 되는 3계층형 시스템을 소개해준다. 그런 다음에, 인프라의 측면에서 챙겨보아야 할 컴퓨터 이론을 기본적인 항목에서부터, 나아가 좀더 챙겨보아야할 부분까지 이야기한다.

하지만, 이어지는 부분은 결코 가볍게 넘길 내용들이 아니었으며 새로이 알게되는 부분들이 많았다. 6장부터는 네트워크로 어떻게 시스템들이 연결되는지, 그러한 시스템을 굳건하게 만들어주는 다양한 부분, 지점에의 이중화들, 그리고 나아가 시스템의 성능까지 고려해야 할 부분을 책의 분량에 너무 과하거나 부족하지 않게 적당한 넓이와 깊이로 다루어주었다.

덧붙이자면, 책에 나오는 그림들을 하나하나 꼼꼼히 단계를 밟아가며 챙겨보기를 추천한다. 한 눈에 잘 안들어올 수 있겠지만, 저자가 정성들여 정리하였다는 것을 알 수 있다.

인상적이었던 부분

TCP의 역할과 철학

TCP의 역할을 간단히 말하면 ‘애플리케이션이 보낸 데이터를 그 형태 그대로 상대방에게 확실하게 전달하는 것이다. 단, 가능한 한 주변에는 민폐를 끼치지 않는다’라고 할 수 있다. p195

내가 대학원에서 네트워크 관련 연구를 했을 때, 어느 연구 발표회 중에 ‘이 연구는 공평성을 고려하고 있는가?’라는 질문을 자주 받은 적이 있다. 아무리 고성능의 통신 구조를 생각했다고 해도 주변 통신에 민폐를 끼치는 방법이라면 환영받지 못한다. p196

’The Internet is for Everyone’ p197, RFC3271 ’Be strict when sending and tolerant when receiving’ p197, RFC1958

고도로 발달한 이과의 기술은 철학과 구분할 수 없다. 아름다운 부분이었다.

IPv4와 IPv6

IPv4와 IPv6는 명칭은 비슷하지만 기본적으로 상호 호환성이 없으며, 전혀 다른 프로토콜이라 보는 것이 맞다. p206

참고로, IPv4와 IPv6가 호환성이 없다고 말했는데, TCP 및 그 윗 단계의 HTTP는 양쪽 버전을 모두 지원하기 때문에 사용자는 IPv4로 통신을 하고 있는지 IPv6로 통신하고 있는지 의식할 필요가 없다. 이것도 계측 구조의 장점이라 할 수 있다. p211

둘이 호환성이 없는 것은 이제서야 알게 되었다.

IPv4 헤더에는 헤더 체크섬을 저장하는 장소가 있다. 이를 통해 헤더 정보가 파괴됐는지 여부를 확인할 수 있지만, 헤더 정보에 변경이 있으면 체크섬을 재계산해야 한다. (중략) 본래 TCP 헤더에도 체크섬이 있으며, 이 체크섬 계산으로 IP 주소 부분을 포함한 일치성을 확인하고 있다. 이 때문에 IPv6 부터는 체크섬이 깔끔하게 제외됐다. p214

IPv6가 좀더 복잡하고 난해할 것 같지만, 위 체크섬 사례뿐 아니라 헤더를 40바이트의 고정 길이를 사용하는 등 단순화한 부분이 많다. 이를 통해 라우터가 해야할 일이 줄어들었다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
초자동화 시대가 온다 - 대화형 AI 기반의 초자동화 생태계 구축을 위한 안내서
롭 윌슨.조시 타이슨 지음, 이윤진 옮김 / 제이펍 / 2024년 4월
평점 :
장바구니담기


개요

제이펍 IT 전문서 리뷰어 활동 첫 서적으로 “초자동화 시대가 온다” 를 리뷰해본다.

알라딘 링크: http://aladin.kr/p/bqMCc

리뷰 동기

AI의 시대가 오니 개발자들은 직장 잃게 생겼다 - 는 이야기에는 동의하지 않고, ChatGPT와 Germini, 그리고 Claude 를 번갈아가며 즐겁게 활용하고 있다. 하지만 인간의 시간과는 차원이 다른 속도로 변해가고 있는 인공지능의 시대에 앞으로 다가올 미래에 대한 개인적 상상은 한계가 있고, 이를 진지하게 고민하는 전문가의 시선을 빌려 , 들여다보고 싶었다.

밑줄과 감상

이 책에서는 이 반비례 관계의 두 가지 측면, 즉 초자동화를 달성함으로써 가능한 일과 가능성을 실현하기 위해 필요한 수많은 조율을 살펴본다. p20

초자동화를 이루기만 하면 놀라운 변화가 있겠지만 그 실현을 위해서 해야할 일은 적지 않을 것이라 말한다.

대화형 AI는 확장 가능한 인터페이스의 연결 고리이지 무한히 확장 가능한 인터페이스이다. p27

미래 UI, UX의 핵심은 대화형 AI 이다. 이는 다음 세 가지 핵심 기술의 조합이다.


“우리는 도구를 만들고, 도구는 우리를 만든다.” - 마셜 매클루언 p70

“우리의 마음은 어떤 기기에서 나오든지 마치 사람의 말처럼 음성에 반응한다.” p73

이 문장이 재미있었다. 마치 사람인듯 착각하게 만드는 AI와의 대화. 하지만 AI가 사람과는 전혀 다른 존재라는 것을 잊어서는 안된다.

업체와의 유일한 상호작용이 기계(를 통해 이뤄지더라도 업체가 자신을 신경 쓰고 있다고 생각하면 회사와 더 깊은 관계를 느낄 수 있다. 초자동화가 표준이 됨에 따라 비즈니스 세계는 거래 기반에서 관계 기반으로 전환될 수 있다. p92

관계 기반이라는 표현이 인상적이었다. 우리는 관계가 있는 상대를 함부로 대하지 못한다. 관계가 있을 경우 좀더 친밀해진다.

정리

전문가의 경험에서 비롯한 관점으로 미래를 엿볼 수 있는 책이었다. 또한 상당히 구체적으로 해야할 일들과 그 프로세스를 제시하고 있다. 이 책에서 말하는 미래의 모습과 대응 전략이 모두 맞지는 않을 것이다. 하지만 이러한 정리를 바탕으로 우리는 가감을 해가며 하나씩 조각을 맞춰 나갈 수 있을 것이다. 이 책의 가치는 거기에서 나온다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
API 해킹의 모든 것 - REST와 그래프QL 웹 API 기초부터 보안 취약점, 해킹 툴, 퍼징 등 공격 실습까지
코리 볼 지음, 한선용 옮김 / 제이펍 / 2023년 8월
평점 :
장바구니담기


개요

서평단 활동으로 “API 해킹의 모든 것”을 읽고 있다. 책은 일차적으로는 API 해킹에 입문하는 화이트해커를 대상으로 한다고 볼 수 있겠지만, API를 다루어야 하는 개발자로서도 보안 전반에 대한 개념과 주의점을 하나씩 짚어볼 수 있다는 점에서 필독서라 할 만하다.

알라딘 링크: http://aladin.kr/p/F40Nu

서평

개발을 하다보면 직, 간접적으로 API 보안에 대해 하나 둘 알게되고, 고민하는 지점이 생긴다. 이 책은 그처럼 산발적이고 우연에 기대어 알게 되는 보안 지식을 일목요연하게 정리해 준다.

“이런 취약점에 익숙해지는 게 중요합니다. 그래야 취약점이 존재할 때 쉽게 알아채고, 공격할 때 악용하며, 이를 조직에 알려서 범죄자가 악용하기 전에 방비할 수 있습니다.” (책 78p)

이 책을 따라가며 대표적인 API의 취약점과 그 공격방법들을 읽고 실습하다 보면 그 취약점에 익숙해질 것이고, 개발 도중에 마주치면 그 기시감에 개선하고 보안을 강화할 수 있게 된다.

구성

책은 API 보안의 기본적인 개념, 웹 애플리케이션의 작동 방법부터 알려주며 그 구조와 요소를 소개해준다. 이렇게 기초 지식을 공유한 다음에 대표적인 11개의 API 취약점을 알려준다.

다음은 그 취약점 하나하나를 공략할 차례이다. 실습을 위한 환경 설정부터 공격을 위한 도구들에 대해서까지 꼼꼼이 설명을 해준 다음 실제 공격 방법과 그 실습까지 다루어준다.

스터디 모임을 하면 좋겠다

실습까지 해보지는 못하였지만 스터디 모임을 하며 하나하나 실습으로 확인까지 해보고 싶었다. 책을 따라가며 실습하기만 해도 그 이해와 익숙해짐이 한결 깊어질 것이기 때문이다.

결론

일반적인 개발자라면 API를 보안의 측면에서 들여다보게 해주는 좋은 책이다. 일독을 권한다.

마지막으로 구석구석의 옮긴이의 말에서 역자 분의 세심한 검토가 느껴졌다. 감사한 마음이다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
붓다의 치명적 농담 - 한형조 교수의 금강경 별기別記
한형조 지음 / 문학동네 / 2011년 3월
평점 :
장바구니담기


감사히 읽고 있다. 쉽게 풀어내어 불교에 대한 이해가 깊어진다. 242 페이지 지미(知味)가 언급된 유교 경전은 대학이 아니라 중용이 아닌가 싶다.

댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo