동시성 프로그래밍 - Rust, C, 어셈블리어로 구현하며 배우는 동시성 프로그래밍 A to Z
다카노 유키 지음, 김모세 옮김 / 한빛미디어 / 2022년 4월
평점 :
장바구니담기


학부 시절 운영체제 수업에서 세마포어나 뮤텍스에 대해 배우며 동기적으로 로직을 처리하는 것의 방법을 익히고 스레드/프로세스 컨텍스트 스위칭을 통해 프로그램이 비동기적으로 효율적으로 작동했던 것을 배웠던 기억이 있다. 현재 모두가 매우 일상적으로 사용하고 있는 노래를 들으면서 문서 작업을 한다거나 화면을 나눠 서로 다른 인터넷 창을 띄우고 하는 등과 같은 작업은 동시성 프로그래밍이 없다면 불가능한 것들이다. 현업에서는 저수준 언어를 사용할 일이 거의 없고 대부분 이미 검증이 끝난 동시성 관련 라이브러리를 활용해 비즈니스 로직 구현 자체에 집중하기 때문에 동시성 프로그래밍이 내부적으로 어떻게 구현될 지 깊게 생각해볼 기회가 거의 없다. 따라서 이번 서평 목록에서 해당 책의 제목을 보고 학부 이후로 내 기억 뒷편에 있던 동시성 관련 개념인 락, 비동기 처리, I/O 다중화 등을 이번 기회에 저레벨로 탐색하고 복기하고자 선정하게 되었다.

이 책이 가장 흥미로웠던 점은 비교적 최신의 저수준 언어인 Rust의 특유의 장점이나 특징 등을 설명해주고 이를 활용해 비동기 프로그래밍, 멀티태스크 등의 구현 예제를 구성헀던 것이다. 최근 Rust에 관심을 가지고 있던 중이라 매우 반가웠다.

7장까지의 내용들은 기존 OS 수업을 들었던 개발자라면 어렵지 않게 따라갈 수 있게 구성되었다. 대부분의 예제들이 Rust로 구현되어서 Rust 학습 겸 재미있게 동시성 관련 개념들을 복습했다. 8장의 동시 계산 모델의 경우 어디서 많이 들어보던 용어들이지만 개인적으로 생소한 개념들이 많아서 여러번 반복해서 읽었지만 내 지식의 깊이를 한층 더 확장시켜주었다.

단순 언어 사용이나 작은 서비스 만들어보기 같은 팔로우업 형식의 책들도 좋지만 개인적으로는 깊은 개발을 위해 스스로 생각해볼 수 있는 기반을 만들어주는 이런 유형의 책들도 자주 나오면 좋을 것 같다.


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



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
MongoDB 완벽 가이드 - 실전 예제로 배우는 NoSQL 데이터베이스 기초부터 활용까지, 3판
크리스티나 초도로우 외 지음, 김인범 옮김 / 한빛미디어 / 2021년 3월
평점 :
장바구니담기


자바스크립트의 오브젝트와 매우 유사한 구조라 그간 간단한 애플리케이션을 개발할 때면 데이터베이스로 MongoDB를 많이 사용해왔다. 대부분 사이드 프로젝트 수준의 작은 프로젝트에만 사용했기 때문에 간단한 CRUD와 인덱싱 위주로 몽고DB를 사용해왔는데 때마침 해당 도서를 리뷰하게 되었고 이 기회에 좀 더 심도 깊게 몽고DB 인스턴스를 구성해보기로 했다.

책의 초반부는 특정 상황에서 왜 RDB 대신 MongoDB를 사용해야 되는지 해당 시스템의 철학과 간단한 쿼리에 대해 설명해주었다. 나는 몽고DB를 런타임 시 오브젝트들의 데이터를 단순 저장하는 용도로 많이 사용했기 때문에 해당 책에서 특수 인덱스같은 것을 사용한 경험이 없었다. 하지만 이 책을 통해 공간 정보 인덱스, 텍스트 인덱스, 제한 컬렉션, TTL 인덱스 등 특정 상황에서 매우 강력한 기능을 지원하는 여러 특수 인덱스의 활용에 대해 배울 수 있었다.

챕터 7에서는 집계 파이프라인을 통해 도큐먼트를 여러 방식으로 후처리하는 예시들을 보여줬는데 RDB 같은 스키마 제한이 없으면서도 RDB만큼 강력하게 데이터 쿼리가 가능하다는 점에서 MongoDB의 매력을 다시 한번 느낄 수 있었다. 또한, 트랜잭션이라는 논리적 처리 그룹을 통해 한가지 이상의 쓰기 및 읽기 작업에 대해 ACID 속성을 충족하게 해서 데이터베이스가 일관성있게 내부 데이터를 유지할 수 있게 하는 기능도 인상 깊었다.

이 책에서 가장 좋았던 부분은 파트 3, 4, 5였다. 실제 예제 데이터베이스 하나 띄우고 쿼리 연습하는 일반적인 데이터베이스 관련 서적과 대비하여 실제 프로덕션 환경에서 발생할 수 있는 가용성 문제 해결을 위한 복제 구성 방법, 분산 확장을 애초에 염두에 두고 설계된 MongoDB의 취지에 맞는 실제 샤딩 구성 및 관리 방법 등 DB 운용 시 필요한 각종 유용한 팁을 얻을 수 있었다. 이와 더불어 mongod가 실행될 때 잘 관리하기 위한 리소스 관리 및 모니터링, 배포, 백업 등 기본적이지만 중요한 여러 요소들에 대해 배울 수 있었다.

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


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
소프트웨어 스펙의 모든 것 - 프로젝트를 성공으로 이끄는 소프트웨어 스펙(SRS) 작성법
김익환.전규현 지음 / 한빛미디어 / 2021년 1월
평점 :
장바구니담기


이제 곧 현업에 나가는 학생 개발자이다 보니 정해진 스펙대로 개발하기보다는 하나의 아이디어를 내고 그 프로덕트를 만들기 위한 기능을 대략 나누어 각자 개발해서 합치는 경우가 일반적이었다. 실제 대규모로 서비스하는 것이 아니다보니 이러한 방식으로도 큰 문제는 없었지만 소프트웨어의 규모가 커질수록 이러한 방법은 한계가 있을거라는 것을 은연중에 느끼고 있었고 마침 11월 리뷰 서적에 이러한 갈증을 해소시켜줄 것 같은 제목의 책이 있어 신청을 하게 되었다. 소프트웨어 요구사항을 분석하고 작성하는 것은 수십가지의 방법이 존재하지만 이 책은 IEEE830과 DoD에 정의된 Sofware Requirements Specification을 중심으로 스펙 문서 작성을 설명한다.

소프트웨어 개발은 1층부터 차례대로 짓는 건물과 달리 동시다발적으로 컴포넌트와 인터페이스를 정의하고 이를 기반으로 병렬적으로 작업이 진행되는 것이 일반적이다. 따라서 초기에 정한 이러한 스펙이 차후 많이 변경된다면 이를 동기화하기 위한 공수도 상당히 많이 들어가게 된다. 실제 대학교 2학년 때 처음 동기들과 프로젝트를 하면서 처음 예상했던 인터페이스에서 너무 많이 달라져서 이후 코드를 머지하는데 큰 어려움을 겪었던 기억이 있다. 이 책에서는 이러한 문제의 솔루션으로 지속적인 통합을 강조하는데 이를 위해서는 유닛 테스트 및 테스트 자동화가 필수불가결하다. 또한, 하나의 컴포넌트를 전부 완성시키고 커밋하는 것이 아닌 컴포넌트 안의 특정 기능을 완성할 때마다 커밋 후 빌드 테스트를 하는 것을 추천한다. 빌드의 경우 환경에 따라 데일리 빌드, 나이틀리 빌드 등으로 변경할 수 있다.

이 책의 좋았던 점은 내가 처한 개발 환경에 따라 다양한 스펙 문서의 유형을 알려주고 이것이 실제 어떻게 사례로 연결되는지 보여준다는 점이다. 또한, 2부에서 실제 SRS의 구성을 따라가며 상세히 작성하는 방법을 알려주는 부분은 실제 현업에 들어가서 바로 적용할 수 있겠다는 생각을 했다.

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


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
실리콘밸리 리더십 - 애플 테크 리더가 들려주는 30가지 비법
마이클 롭 지음, 김정혜 옮김 / 한빛미디어 / 2021년 8월
평점 :
장바구니담기


애플 테크 리더가 들려주는 30가지 비법이라는 부제에 끌려 이번 리뷰도서로 신청한 것 같다.

저자의 이력은 대단하다. 인터넷 브라우저의 모태인 넷스케이프부터 애플, 슬랙까지 우리가 한번쯤 이름을 들어본 빅테크 기업들에서 전부 일했던 경험이 있다. 어떤 사람은 한 곳 다니기도 힘든 이런 유명한 회사들을 두루 두루 다녀본 이력이 소프트웨어 개발자로써 매우 흥미롭게 다가왔고 거기에 어떤 비법이 숨어있을까 궁금해하며 첫장을 폈다.

이 책은 개발자보단 관리자로써의 커리어 패쓰에 대한 안내서 같은 느낌이다. 비록 지금은 개발자로 일하고 있지만 나이가 들고 개발자로 직무 변경이 일어나는 건 드물지 않은 일이기 때문에 많은 흥미가 생겼다.

1부에서 가장 인상깊었던 장은 '성과 관리가 능사는 아니다'라는 부분이다. 소프트웨어 개발자로써 항상 성과를 달성하는 것에 민감하고 내가 앞으로 관리자가 되더라도 성과에 비례해 철저히 구분하는 것이 공정하다고 믿고 있었다. 하지만 저자는 '성과 관리'라는 두 단어를 머릿속으로 떠올리지도 말라고 조언한다. 도입부에서 이러한 말을 보고 이렇다면 조직이 너무 느슨해지진 않을까하는 우려가 생겼다. 하지만 그가 말하는 것은 관리자가 기대하는 성과와 실제 실무자의 성과 사이에 갭을 좁힐 수 있는 몇 달의 유예기간을 주라는 것 이었다. 초장부터 관리자니까 조직원들의 성과를 철저히 관리해야된다고 생각하면 그 조직원들과의 상호작용이 어색해지고 딱딱해진다는 것 이었다. 이러한 부분은 물론 업무 성격에 따라 다르겠지만 꽤나 설득력있는 주장이라고 생각했다.

그다음 읽으면서 내가 예전에 팀 프로젝트를 하면서도 뼈저리게 느낀 '고통스어루 정도로 많이 위임하라' 섹션이었다. 나도 성향이 약간 혼자 모든 것을 처리하려는 성격이 있어서 일의 진행이 더디고 답답하다고 느낄 경우 아랫 사람을 믿기보다는 내가 먼저 처리해버리는 방식의 일처리를 해왔던 것 같다. 하지만 이런 방식으로 지속적으로 일을 진행할 경우 이 책의 저자가 말하는 '신뢰'가 싹트기 힘들게 된다. 물론 처음에는 여러 시행착오가 있을 수 있겠지만 이를 통해 지속가능성을 얻게 된다. 132쪽에 나와있는 각각의 경험 수주네서 위임 행위에 대한 설명은 앞으로 내가 관리자가 됐을 때 특히 유용할 것 같다.

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


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
오준석의 플러터 생존 코딩 - Flutter와 Dart 입문부터 안드로이드와 iOS용 3가지 앱 개발까지, 개정판 소문난 명강의
오준석 지음 / 한빛미디어 / 2021년 5월
평점 :
장바구니담기


이번 달에는 딱히 끌리는 도서가 없었던 것 같다. 그래서 크로스플랫폼으로 앱개발을 지원한다는 플러터를 한번 배워볼까하여 해당 책을 신청하였다.

개인적으로 앞부분에 환경설정 및 다트문법으로 100페이지 가량 할애한 것은 꽤나 아쉬운 부분이었다.

요즘 정적호스팅은 손쉽게 할 수 있는 세상인 만큼 이러한 내용들은 저자가 따로 간단히 문서화하여 웹상에 올려놓고 플러터쪽으로 집중했으면 좀 더 알찬 책이 될 수 있지 않았을까 하는 사족을 붙여본다.

하지만 이러한 부분을 차치하고 그밖의 프로젝트기반의 플러터 소개는 상당히 잘 짜여있었다.

특히 앱개발 경험이 없는 나조차도 스텝바이스텝으로 손쉽게 따라가며 스톱워치, 할 일 관리 앱을 만들 수 있었다. 특히 할 일 관리의 경우 CRUD를 배울 수있는 고전적이지만 효과적인 엔트리포인트이기 때문에 해당 프로젝트를 기반으로 내가 원하는 다른 프로젝트로 진행할 수 있는 발판을 마련해줄 수 있을 것 같다.

요즘 하루하루 지날때마다 새로운 프레임워크, 언어, 시스템들이 범람하고 있는데 이러한 현실에서 크로스플랫폼은 꼭 필요하다고 생각된다. 비록 지금은 네이티브급 성능을 내는 크로스플랫폼은 아직 전무하지만 플러터같은 시도가 계속되는 것은 매우 좋다고 생각한다.

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


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