최근 개발자 채용 시장에서 눈에 띄는 변화가 있습니다. 시니어 개발자를 뽑는 기술 면접에서 코딩 테스트보다 시스템 설계 면접의 비중이 크게 높아진 것입니다. 이는 단순히 채용 트렌드의 변화를 넘어, 개발자에게 요구되는 핵심 역량이 '코드 작성'에서 '시스템 설계'로 이동하고 있음을 의미한다고 생각합니다.  우리 팀을 비롯하여 많은 IT 기업들이 시니어 엔지니어 채용 과정에 2-3시간의 시스템 설계 세션을 반드시 넣고 있죠. 이 과정에서 지원자의 아키텍트 설계 능력과 문제 해결 사고방식을 심층적으로 평가하려고 노력합니다.

 

주니어 개발자는 알고리즘 중심의 코딩 테스트로 기본기를 검증하는 반면, 시니어 개발자는 실제 요구사항을 기반으로 확장 가능하고 안정적인 시스템을 설계하는 능력을 평가합니다. 개발자라는 경력이 쌓일수록 핵심 역량이 코드 구현 능력에서 전체 시스템을 조망하고 설계하는 아키텍처 능력으로 전환된다는 의미겠지요. 결국 개발자들이 만들어내야 하는 최종 산출물은 개별 함수나 클래스가 아니라 전체 '시스템'이기 때문이기도 합니다.

 

이런 채용 시장의 변화 흐름에 발맞춰 시스템 설계 관련 책들을 쉽게 접할 수 있는데요. 알렉스 쉬의 대규모 시스템 설계 책이 나온 이후 여러 출판사에서 비슷한 도서들이 출간되었습니다. 이번에 살펴본 책은 Packt(팩트) 출판사에서 나온 '요즘 개발자를 위한 시스템 설계 수업(System Design Guide for Software Professionals)' 입니다. 번역서는 길벗에서 나왔습니다.

 

덕지덕지 붙은 포스트잇과 접힌 귀..

 

요즘 같은 AI 시대에 저는 시스템 설계의 중요성이 점점 높아진다고 생각합니다.  코딩 AI가 일상 개발현장에 적용되면서 개발자의 업무 중심이  코드 자체를 생산하는 것에서 올바른 시스템 구조를 설계하는 것으로 이동하고 있다고 봅니다. AI를 이용하면 주어진 명세/요구사항에 따라 코드를 빠르게 생성해 낼 수 있지만, 비즈니스 요구사항을 만족하면서도 확장 가능한 시스템 아키텍트를 설계하는 것은 여전히 시니어들의 몫입니다. (이 역시 조만간 대체될 지도 ..) 또한 서비스 시스템의 구조를 어떻게 설계했는지에 따라 사용자의 경험이나 운영 비용에 크게 영향을 미칠 수 밖에 없습니다. 그런 맥락에서도 시스템 설계에 관한 책은 시간과 노력을 들여 학습해 볼만한 가치가 있다고 생각합니다. 

 

시스템 설계를 다루는 책들은 비슷한 체계를 가지고 있습니다. 기본 내용을 설명하고, 이를 바탕으로 실전 서비스를 설계해 보면서 기본 내용이 실전에서 어떻게 활용되는지를 다룹니다. <요즘 개발자를 위한 시스템 설계 수업> 책의 특이점 내지 장점이라면 그 사이에 2부에서 DNS, 로드 밸런서, 데이터베이스 및 캐싱, 메시지 큐, 등 실제 분산 시스템을 구축할 때 사용해야 하는 실제 구성요소를 설명한다는 점입니다. 그래서 이론과 실전 사이의 가교가 되어 줍니다. 시스템을 설계하다보면 트레이드오프를 고려해서 결정할 수 밖에 없는데, 그에 대한 이론적 배경을 1,2부에서 잘 다루고 있습니다.

 

<요즘 개발자를 위한 시스템 설계 수업>의 또다른 특징은 풍부한 역자 주석입니다. 번역하신 분이 본문 중간중간에 상당량의 부연 설명을 추가했는데, 이는 양날의 검이 될 수 있습니다. 읽다가 이해하기 어려운 개념이나 맥락이 나왔을 때 친절하고 구체적인 설명을 통해 쉽게 읽을 수 있도록 도와주는 긍정적인 면이 큽니다.  다만 일부 구간에서는 원저자의 서술 흐름이나 논조와 살짝 다르게 느껴지는 부분도 있습니다. 떄로는 설명 스타일이 갑자기 바뀐 듯한 느낌을 받을 수 있습니다. 그럼에도 불구하고 전체적으로 거의 '편저' 수준의 노력이 들어간 번역이고, 우리나라 독자들을 위해 세심하게 배려했음을 느낄 수 있습니다. 

 

<요즘 개발자를 위한 시스템 설계 수업> 3부를 재미있게 읽는 또하나의 방법은 유사한 서적들에서 제시한 설계 구조를 비교하면서 읽어보는 것입니다. Manning 출판사에서 나온 시스템 디자인 책은 아직 읽지 못했는데, 다루는 실전 사례는 비슷합니다. 각 저자들 마다의 접근 방식을 비교해서 읽어보는 것도 좋을 것 같습니다. 동일한 시스템에 대해 각 저자가 제시하는 설계 방식을 비교하다보면 트레이드오프에 대한 이해도가 한층 높아진 느낌을 받습니다.

책 제목 요즘 개발자를 위한 시스템 설계 수업 대규모 시스템 설계 시스템 설계 면접 완벽 가이드
저자 소속 구글, 넷플릭스 전 트위터 페이팔 
주요 예제 URL단축 서비스(9장)
근접서비스(10장)
X 서비스(11장)
인스타그램 서비스(12장)
구글독스 서비스(13장)
넷플릭스 서비스(14장)
URL 단축기(8장)
뉴스 피드(11장)
채팅 (12장)
검색어 자동완성(13장)
유튜브 설계(14장)
구글 드라이브(15장)
웹 크롤러(9장)
알림 (10장)


----
근접성 서비스(2권 1장)
주변 친구(2권 2장)
구글맵(2권  3장)
분산 메시지 큐(2권 4장)
지표 모니터링(2권 5장)
광고 클릭 이벤트 집계( 2권 6장)
호텔 예약(2권 7장)
분산 이메일 시스템(2권 8장)
S3 객체 저장소(2권 9장)
실시간 순위표(2권 10장)
결재 시스템(2권 11장)
전자지갑(2권 12장)
증권거래소 (2권 13장)

플리커 설계(12장)
뉴스피드 설계(16장)
CDN(13장)
알림 경보 서비스(9장)
데이터베이스 배치 감사 서비스(10장)

자동완성(11장)
크레이그 리스트(7장)
속도 제한 서비스(8장)
문자 메시징 앱(14장)
에어비앤비(15장)
아마존 상위 10개 제품 대시보드(17장)

 

실제 응용 사례를 보면 대부분 비슷한 요구사항을 가지고 있습니다. 저도 이 책을 읽으면서 우리 팀에서 구현하고 있는 서비스와 비슷한 측면을 보고, 이 기능을 구현할 때는 이런 점들을 고려해야 하는군 하는 생각을 많이 했습니다. 물론 책만으로는 완벽한 시스템 설계 역량을 갖추기 어렵겠지만, 실전에서 겪을 문제를 사전에 기본 토대와 함께 고민해 볼 수 있고, 가상의 사례를 통해 나라면 어떤 기준으로 어떻게  설계할까를 고민하면서 읽어가다보면 책을 읽기 전에 비해 시스템 설계에 대한 이해도가 높아진다고 생각합니다.

 

이 책은 1,2부에서 분산 시스템의 기본 개념을 익힌 후 3부에서 실전 사례를 시뮬레이션으로 연습해 보면서 개별 지식을 하나로 묶는 연습을 하기에 좋은 책입니다. 이 가을 재미있는 아키텍트 책으로 즐거운 시간을 가져보시길. 강추드립니다.

 

 

 

 

요즘 개발자를 위한 시스템 설계 수업 | 디렌드라 신하 - 교보문고

요즘 개발자를 위한 시스템 설계 수업 | 트렌디한 서비스 사례로 배우는 시스템 설계 실무, 실전 아키텍처 설계부터 빅테크 면접까지 한 권으로 완전 정복!이 책은 시스템 설계의 기초 개념부터

product.kyobobook.co.kr

 

반응형

평소라면 굳이 찍어먹지 않아도 척 보면 알 수 있는 것도 있지만, 개발자에게는 뭔가 블랙박스를 열어보고 싶은 본능이라는게 있는 것 같다. 요즘같은 大 AI 시대에, "LLM은 어떻게 돌아가는 거야?"라는 질문에 "그냥 마법이야. API만 쓰면 되지"라고 대답할 수는 없는 노릇이다. 호기심으로 인해 직접 만들어보고, 운영하다가 망가지기도 하고, 그걸 고치면서 다시 깨달음을 얻고.. 이 과정을 반복한 것이 개발자의 인생 아니었나. 그래서 LLM의 이해를 돕기 위해 살펴본 책이 <밑바닥부터 만들면서 배우는 LLM>(세바스찬 라시카 지음, 박해선님 번역, 길벗 출간)이다.

 

 

길벗에서 나온 밑바닥부터 만들면서 배우는 LLM

 

 

 

책은 실제로는 거의 600쪽 가까운데, 부록이 100여 정도 되고, 워크북도 120여쪽 정도 된다. 그래서 본책은 300쪽 남짓이라 보면 된다. (300쪽으로 LLM 동작원리를 압축해서 설명한다.이해하려면 머리속으로 압축을 풀어야 한다) 파이썬 기본 문법만 알면 그럭저럭 따라가면서 만들어 볼 수 있다. 책은 3단계로 나눠서 LLM을 만든다. 1단계에서는 데이터를 준비하고, 어텐션 알고리즘을 구현하면서 LLM의 기본 골격을 만든다. 그런 다음 트레이닝 과정을 반복하고, 모델을 평가하면서 파운데이션 모델을 만든다. 사전 훈련된 가중치 값을 불러오고 미세튜닝까지 진행하는 것이 2단계다. 3단계는 활용인데, 미세 튜닝을 통해 분류기와 개인 비서로 활용하는 방법을 맛본다. 이 책의 장점 중 하나는 전체 로드맵을 두고 각 장마다 이번엔 어떤 부분을 만들것인지를 먼저 인식한 상태에서 설명을 이어간다는 점이다. 전체 과정중 현재 어디까지 왔는지를 이해하면서 책을 읽을 수 있다. 잘 구성된 책이다.

 

 

이 그림이 책의 목차인 셈이다.

 

 

이 책에서 만드는 LLM은 요즘 일상에서 사용하는 최신 AI(LLM 모델)이 아니다. 요즘은 사고에 추론까지 갖추기 위해 다양한 시도를 하지만 이 책은 텍스트 토큰나이징부터 시작하여 어텐션 매커니즘을 구현해 보고, LoRA 기반으로 미세조정까지 진행한다. 어찌보면 AI 바닥에 계신 분들에게는 이전 세대의 기술처럼 인식될 수도 있겠다. 하지만 나처럼 LLM을 활용하기 위해 고민하는 사람들에게는 이 블랙박스같은 LLM의 동작원리를 이해하는 것이 하나의 과제가 되는데, 초기(?) 버전의 기술을 살펴보는 것이 오히려 개념이 간결하고 복잡하지 않아서 이해하는데 도움이 되는 경우가 많다. 물론 동작 원리를 이해하고 나면 응용 개발자 입장에서는 다시 동작원리를 잊어버리고 활용을 하겠지만, 그래도 한번의 이해가 큰 도움이 되는 상황이 많다. 디버깅, 최적화, 트러블슈팅할 때   HTTP 프로토콜을 보지 않고 REST API만 호출하는 개발자와 HTTP 프로토콜을 이해하면서 REST API를 호출하는 개발자 사이에서 볼 수 있는 내공의 차이가 이런 호기심 때문은 아닐까 생각한다. 번역서인 까닭에 한글은 어떻게 처리해야 할지는 빠져있지만, 원리는 이해된다.

 

<밑바닥부터 만들면서 배우는 LLM>책을 읽기 시작한지는 좀 되었다. 추석 연휴를 이용해서 읽겠다는 계획을 세웠다. 그런데 처음 읽기 시도에서는 완독에 실패했다. 책을 읽다가 모르는 용어가 나오면 열심히 AI와 씨름하며 개념을 복습도 하고, 새로운 개념을 익히기도 했다. 그러다 보니 너무 곁길로 새어버렸다. LLM은 역시 어렵군하면서 잠시 우울해 하다가 그냥 잘 이해되지 않더라도 쭉~ 책을 따라하면서 일독을 했더니 저자가 설계한 내용이 조금 더 이해가 되었다.이런 이해를 바탕으로 다시한번 읽는 중이다. 완전히 이해하려면 몇 번을 더 읽어봐야할지 모르겠지만 여러번 읽으면서 이해의 해상도를 높여야 하는, 보기드문 핸즈온 LLM 책이라 생각한다. LLM의 작동 원리가 궁금한, "AI(OpenAI나 Vertex) API 호출만 할 줄 아는 개발자"에서 벗어나 원리를 이해하고 제대로 활용해 보고 싶은 개발자라면 이 책이 유용할 것이라 생각한다.

 

혼자 완독하기는 힘든 책이다. 인프런에서 진행되는 완독 챌린지 강의에 참여(이미 모집이 완료되었다.)하거나 역자인 박해선님의 유튜브 채널의 도움을 받는 것이 좋겠다.

 

 

 

밑바닥부터 만들면서 배우는 LLM | 세바스찬 라시카 - 교보문고

밑바닥부터 만들면서 배우는 LLM | 한 줄 한 줄 코드를 따라가다 보면, 나만의 GPT가 완성된다! GPT를 밑바닥부터 구현하며 LLM의 원리를 손끝으로 체득하는 실전 가이드어려운 개념은 그림으로 풀

product.kyobobook.co.kr

 

반응형

+ Recent posts