You Don’t Know JS Yet - 자바스크립트 개념, 스코프와 클로저
카일 심슨 지음, 이보라 옮김 / 한빛미디어 / 2024년 1월
평점 :
장바구니담기


오랫동안 다뤄왔지만 JavaScript 내부 동작에 대해 고민해보거나 개발 언어 특성에 맞게 코드를 작성하려는 노력을 굳이 하지 않았다. 누군가 좋은 패턴이라고 하면 수용적인 태도로 고개를 끄덕거리며 비슷하게 코드를 작성하기 위해 시간을 들였던 기억만 남는다. 쉬우면서도 어려운 언어 그리고 오래동안 사용했지만 자신있게 잘 사용할줄 안다고 하기 어려운 개발 언어가 JavaScript이다. 


You Dont' Know JS는 JavaScript을 알지만/잘 알지 못하는 개발자들을 위한 필독서라고 할 수 있다. 이 책의 강점이라고 할수 있는데, 내부 동작방식에 대해 정말 짧은 예시 코드들을 가지고 설명을 풀어나간다는 점이다. 짧은 예시 코드들은 복잡하지 않기 때문에 독자의 이해를 돕기도 하지만, 한번에 이해되지 않는 상황에도 부담을 줄여주어 여러번 반복해서 읽어볼 수 있게 해준다.

 

사실 YDKJSY(You Don't Know JS Yet)시리즈는 6개의 챕터로 이루어져 있는데, 이번 책은 첫번째 자바스크립트 개념과 두번째 스코프와 클로저를 엮어서 만든 것이다.

 

기억나는 몇몇 내용들을 요약하자면

1) JavaScript는 ECMAScript의 스펙을 지원하는 개발언어이며, 하위호환을 존중하는 언어이다.

2) 렉시컬 스코프 스펙을 지원하기 위해 구문 분석과 같은 컴파일이 필요하고 실제 동작은 인터프린터 방식을 취한다. 

3) function에 대한 일급 객체를 지원한다.

4) class 문법없이도(추후 지원했지만) 클로저, 프로토타입을 활용하여 function을 객체로 서술하였고 또는 상속 개념처럼 활용할 수 있도록 발전해왔다.

5) 간략한 코드 예시를 통한 스코프와 클로저의 수많은 개념 설명들


저자는 초반에 중급자를 위한 책이라고 밝히는데 사실 JavaScript를 막 시작한 개발자가 아니라면 크게 무리가 없다고 생각한다. 중요한 점은 다른 개발 언어를 다뤄봄으로써 JavaScript의 철학을 이해하고 비교할 수 있는지가 중요한데 Java, Python, C/C++, Golang등 어떤 것이든 상관이 없다고 생각한다.



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


댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
Release의 모든 것 - 대규모 웹 분산 시스템을 위한 운영 고려 설계 | 아마존 소프트웨어 공학 분야 베스트셀러
마이클 나이가드 지음, 박성철 옮김 / 한빛미디어 / 2023년 11월
평점 :
장바구니담기


소프트웨어 개발을 처음 시작하는 사람들은 요구사항에 대한 정교한 설계 보다는 어떤 기술을 사용해서 어떻게 구현할 것인지에 대해 고민을 하게 되는데 운용을 포함한 입체적인 관점보다는 구현 자체에만 의미를 두는 경우가 많다. 여기서 정교한 설계는 어떤 시스템과 통합될 것인지 그리고 사용하게될 사용자수는 어떻게 되는지, 안정성을 위해 테스트 시나리오는 무엇일지 그리고 마지막으로 이 모든것을 포함하여 구현해야할 기능들에 대해 일정내 가능할지등 고민하는 것을 말한다.


문제는 실제 제품이나 서비스 운용 경험이 있어야 설계에 여러가지 고려사항들을 포함시킬 수 있다는 점이다. thread safe하지 않는 API를 사용해서 간헐적으로 프로세스가 죽는다던가 또는 책에서도 나오는 예시로 try-catch-finally에서 finally 구문에 close에서 다시 예외가 raise 될 수 있는 것을 고려하지 못해 socket 파일을 닫지 못하는 상황이 발생할 수 있다. 


"Release의 모든 것", 이 책은 제품 및 서비스(대부분 서비스 이야기이지만...) Release 이후의 일어날 수 있는 문제점 요소들에 대해 나열하고 서사 방식의 예시를 통해 몰입을 더한다. 책 표지만 봐서는 Release를 어떻게 해야하는지에 대한 좀 따분한 느낌이 들긴 했지만 말이다.
저자 마이클 나이가드는 미국 정보, 은행, 금융, 농업, 상거래등 시스템을 설계 구축하고 운용한 사람으로써, 이미 2007년에 1판 "Release it ! 성공적인 출시를 위한 소프트웨어 설계와 배치" 책을 다시 가다듬어서 2판으로 낸 것이다.


시니어 개발자라는 이야기를 하게 되면 꼭 대용량 트래픽이 빠지지 않는다. 그만큼 난이도가 있고 시스템적으로 난이도가 있고 컴퓨팅자원뿐 아니라 인정 자원등 고려할 사항이 많기 때문인데 이 책은 그에 대한 힌트 또한 얻을 수 있다. 물론 대용량 트래픽이 아니더라도 복잡한 시스템에 대해 어떻게 운용 관점에서 밤을 새지 않고 새벽에 끌려가지 않게끔 건강한 개발자 그리고 건강한 시스템을 만들어가게 되는 비법을 제공한다. 이 책의 큰 장점이다.


물론 단점 또한 존재하는데 많은 주제를 이야기하다보니 최소 CS(Computer Science) 지식과 서비스 개발 및 출시 경험이 조금이라도 있어야 몰입할 수 있다는 점이다. TCP/IP가 무엇인지 3 hand shaking 과정은 어떻게 되고 TIME_WAIT을 줄일 수 있는 설정은 어떻게 하는지등 자세한 내용은 서술하지 않는다. 당장 구현해야할 기능들을 해결하기 급급하다면 책의 절반 이상은 공감하기 힘들고 다른 세상 이야기로만 느껴질 수 있다. 그럼에도 불구하고 옆에 두고 패턴 부분이나 실제 사례 내용들을 차근차근 읽어보면 1~2년 뒤 개인의 성장과 담당 서비스가 성숙하는데 충분히 도움이 될 것이라 생각한다.


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

	

 



댓글(0) 먼댓글(0) 좋아요(2)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
파이썬 크래시 코스 - 누적 판매 150만 부 기록! 파이썬 분야 글로벌 1위 베스트셀러 I 연습문제 + 해답, 파이썬 치트 시트 제공
에릭 마테스 지음, 한선용 옮김 / 한빛미디어 / 2023년 8월
평점 :
장바구니담기


만약 프로그래밍에 충분한 경험이 있는 사람들은 Python 레퍼런스 문서만 읽어도 시작이 가능하지만, 개발을 처음 시작하는 사람에게는 좀 더 친절하고 숙련된 가이드가 필요하다. 이 책은 Python을 시작하는 사람에게 중요한 입문서 역할을 하는 책이다.



책은 기본편과 실습편으로 분할되어 있고 기본편에서는 Python 언어 설치부터 문법에 대한 설명과 다양한 연습문제들이 제공된다. 실습편은 앞서 기본편에서 학습한 문법들에 대해 좀 더 실용적인 실습을 할 수 있도록 재미있는 프로젝트 기반의 실습을 제공함으로써 학습자의 몰입을 돕고 좀 더 능숙하게 언어를 다룰 수 있도록 한다. 

저자 에릭 마테스는 기술서적 저자이면서 개발자이다. 2000년쯤 Java를 사용하여 개발을 했지만 현재는 Python을 주로 활용하고 있고 비영리재단에서 활동하거나 여러 오픈 소스 프로젝트에 참여하고 있다. 만약 저자의 다양한 생각을 엿보고 싶다면 이 인터뷰 내용을 읽어보자

실습편은 3가지 프로젝트를 제공하는데 첫번째는 pygame을 통해 과거의 오락실에서 한번 해봤을 만한(또는 추억의 갤러그 같은) 슈팅 게임을 만들어보는 것이고 그 다음은 데이터를 기반으로하는 다양한 시각화, 마지막으로 Django 기반 웹서비스 개발이다. 이렇듯 단순 실습이 아니라 프로젝트 기반이고 충분히 사용자가 개발을 하면서 재미를 느낄 수 있도록 게임을 도입했다는 것이 인상적이다. 

참고로 책 서문에서도 꽤 친절한 가이드가 있는데 입문자의 난이도를 고려하여 실습 중 Django 부분은 제일 마지막에 하라고 나와있다. 실제로 Django 프레임워크는 2005년즘 첫 릴리즈를 시작했으니 올해를 기준으로 약 18년이나 된 굉장히 성숙한 프레임워크이고 Production을 위한 많은 기능들을 제공한다. 개인적으로 소규모의 프로젝트를 진행하게 될 때 특별한 이유가 없다면 바로 선택하여 활용하기도 하고 국내 스타트업에서도 활용하고 있어 학습을 해야할 이유가 충분한 프레임워크이다.

무엇보다 개발을 시작하고 실력이 늘어가는 과정을 경험하려면 실용적인 과정이 반드시 필요하다고 생각한다. 이 책은 기본 문법 뿐만 아니라 실용적인 관점에서 주요 프로젝트 실습까지 제공함으로써 입문자가 빠르게 성장하는 기반을 마련해줄 수 있는 입문서라고 생각한다.

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


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
소프트웨어 아키텍처 The Hard Parts - 분산 아키텍처를 위한 모던 트레이드오프 분석
닐 포드.마크 리처즈.세막 데그하니 지음, 이일웅 옮김 / 한빛미디어 / 2022년 10월
평점 :
장바구니담기


소프트웨어 아키텍처 the hard parts는 2021년도에 출판된 소프트웨어 아키텍처 101 책의 후속 편이다. 저자 닐포드, 마크 리처즈의 책으로써 이번 hard parts에서는 프라모드 세달라지, 세약 데그하니가 저자로 추가되어 총 4명의 저자가 쓴 현대적인 소프트웨어 아키텍처의 advanced 기술 서적이다.

모든 문제가 하나하나 새로운 도전을 요하기에 어떻게든 문제를 해결하려는 중대한 의사 결정의 양편에 치우친 수많은 트레이드오프를 냉정하게 판단하고 평가할 때 아키텍트의 진가가 드러납니다.

소프트웨어 아키텍처에서는 최고의 설계를 고집하지 마세요. 그 대신 나쁜 것 중에서 제일 나은(least worst) 트레이드 오프 조합을 찾으세요.
26p 

책 시작부에 나오는 이야기로써, 사실 시스템 또는 서비스 아키텍처란 작은 범위의 문제를 해결하는 알고리즘 수준이 아닌 좀 더 큰 범위의 문제 또는 도메인을 다뤄야 하기 때문에 모든 문제를 같은 해법으로 해결할 수 없는 경우가 대부분이다. 전반적으로 트레이드오프를 어떻게 분석하고 활용하는지를 서술해 나간다.

무엇보다 한빛가이버 티켓팅 애플리케이션팀의 이야기를 엿볼 수 있다. 한빛가이버란 가상의 애플리케이션으로 운영상 발생한 문제에 대해서 문제가 무엇이고  담당자들 간 의견의 차이점을 설명한다. 상황 및 트레이드오프를 위한 기반 내용 설명을 해주게 되는데 이후 나오게 되는 기술 설명들에 대해 몰입할 수 있게 해주는 중요 역할을 맡고 있다.

책은 크게 두 개의 파트로 나누어져 있다. 

  • Part1 따로 떼어놓기
  • Part2 다시 합치기

하나의 모놀리식 애플리케이션을 어떻게 분할하여 확장해나 가는지에 대한 Part1 그리고 운영하는 데 있어 분할이 끝이 아니라 적절한 크기의 서비스를 만들어가기 위한 다시 합치는 과정 그리고 마이크로서비스에서 피할 수 없는 분산 트랜잭션에 대한 이야기로 가득하다. 

이 책은 새로 시작하는 서비스의 아키텍처를 이야기하는 책은 아니다. 서비스 또는 애플리케이션이 점차 발전해 나감에 따라 어떤 문제점을 직면하게 될 것인지 그리고 해결 아이디어에 대한 트레이드오프가 무엇인지를 미리 경험해 볼 수 있는 장점이 있다. 

책을 읽어나가면서 개발 일을 하면서 경험했었던 비슷한 일들을 보곤 하여 공감이 가는 부분들도 꽤 있었다. 책상 옆에 두고 신규 도메인 일을 할 때마다 반복적으로 읽어보고 싶은 책이다.

초기 스타트업에서 살아남아 조직이 확대되고 마이크로서비스를 준비하고 있는 개발조직에서 읽으면 꽤 유용할 것이라고 생각한다. 참고로 도메인 주도 설계에 대해서 미리 학습하고 본다면 이해하는데 더욱 도움이 될 것이다.

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



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
마이크로서비스 아키텍처 구축 가이드 - 성공적인 마이크로서비스 아키텍처 적용을 위한 체크포인트와 전략
김용욱 지음 / 한빛미디어 / 2023년 2월
평점 :
장바구니담기


마이크로서비스는 명시적인 스펙이 아니다. 그래서 회사 마다 바라보고 적용하는 수준이 다를 수 있다. 그러다보니 자사의 서비스에 마이크로서비스를 도입하는게 맞는지 그리고 도입하게 된다면 맞는 구조란 무엇인지가 모호하게 느껴지는 것도 사실이다. 이 책은 마이크로서비스란 무엇인지로 시작하여 도입을 고민하고 싶다면 어떠한 기준이 필요한지 장단점에 대한 설명으로 시작하고, 이어서 온라인 강의 서비스를 구축한다는 가정으로 하나하나 섬세하게 마이크로서비스에 대한 적용 단계를 설명한다. 

3장 데이터베이스를 분리한다고?" 에서는, 모놀로식 대비 마이크로서비스로 서비스를 개발하게 될 때 경험하게 되는 문제점들을 나열하고 해결방안에 대해서 서술한다. 전반부에 이러한 내용들이 잘 정리되어 있는 점이 인상적이었고 설명을 매끄럽게 잘하는 점이 좋았다. 대략 3-4년전 마이크로서비스로의 전환 작업을 진행했을 때 직면했던 문제점들에 대해 잘 정리되어 있어 놀랐다.

화면 요구사항, 기능 요구사항에 대한 예시를 기반으로 설계 구조를 그림으로 설명한다. 그 외 API 설계나 실제 코드 그리고 버전을 통한 유지보수 예시등 운용에 대한 다양한 설명을 엿볼 수 있다.

가벼운 마음으로 읽기 시작했는데 점차 몰입해서 보게 된 책이었다. 마이크로서비스를 구축하려는 계획이 있는 사람이 이 책을 메인으로 시작하여 다른 책을 1-2권을 비교하고 설계 작업을 점진적으로 진행한다면 상당한 도움을 받을 수 있지 않을까하는 생각이 들었다. 꼭 한번 읽어보길 추천한다.

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



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