멘토링 기간 | 기본 4개월 (17주) *월 단위 연장 가능 |
멘토링 방식 | 1. 주 1회 1시간 화상 멘토링 (Slack으로 멘토님과 상시 소통)
2. 시니어 개발자의 꼬리질문 멘토링 방식
3. 프로젝트 가이드 및 Github로 상시 코드 리뷰
4. 멘토링 녹음본 및 스크립트 제공
5. 이력서, 기술 면접, 포트폴리오 등 커리어 코칭 |
멘토링 커리큘럼은 멘티의 현재 실력과 경험에 맞춰 맞춤형으로 진행됩니다.
선정된 멘토님과의 멘토링 과정에서 개인별 커스터마이징되며, 이미 실무 경험이나
기본 내용을 숙지하고 계신 분들은 심화 과정에 안내된 내용 중심으로 바로 진행할 수 있습니다.
Step 00. 숙지사항
F-Lab은 기술을 제대로 알고 쓰는 것에 중점을 두고 있습니다. 단순하게 “기업의 채용 우대 사항에 있는 특정 기술을 경험해 봤다” 정도만으로는 커리어를 향상시키기 어렵기 때문입니다.
F-Lab의 커리큘럼은 단순히 완주하는 것이 목표가 아닙니다.
많은 분들이 끊임없이 공부에 몰두하더라도, 좋은 회사에 입사하지 못하는 주된 이유는 진도를 나가는 데에만 급급하여 필요한 지식을 제대로 습득하지 못하고 넘어가게 되어, 면접에서 깊이 있는 답변을 하지 못하기 때문입니다. 분명히 공부했음에도 불구하고 면접에 가면 말이 나오지 않는 이유 또한 이 때문입니다.
사용하는 기술에 대해 깊게 학습하면, 면접에서도 깊이 있는 답변을 할 수 있습니다. 이는 좋은 인상을 줄 뿐 아니라, 개발자로서 학습한 지식을 코드에 적용하는 능력도 향상시킵니다. 깊은 학습은 개발 실력 자체를 향상시켜주며, 이는 본질적인 개발 역량의 향상을 의미합니다.
따라서 F-Lab에서는 멘토와 멘티가 1:1로 맞춤형 학습을 진행합니다. 멘티 개개인의 학습 수준과 방식에 맞춰진 커리큘럼을 통해, 꾸준하고 깊이 있는 학습 습관을 기르는 것이 중요합니다. 이를 통해 멘티님은 상위권 개발자로 성장할 수 있습니다.
Step 01. 기본기 심화학습(4주)
많은 개발자들이 Node.js를 사용해 백엔드 서비스를 만들고 있지만, 동작 원리와 런타임 특성을 제대로 이해하고 사용하는 사람은 매우 적습니다.
내가 사용하는 기술들에 대해 잘 알고, 내가 짠 코드 한줄한줄을 모두 설명할 수 있는 개발자로 성장하기 위해 기본기를 닦는 이론학습 시간을 가집니다.
아래 순서대로 책을 읽는 것이 좋습니다.
•
코어 자바스크립트
•
Node.js 교과서
•
타입스크립트 교과서
•
NestJS로 배우는 백엔드 프로그래밍
•
혼자 공부하는 컴퓨터 구조 + 운영체제
•
Node.js 디자인 패턴 바이블
•
객체지향의 사실과 오해
•
Real MySQL 8.0 1권
Step 02. 프로젝트 설계 (1주. 기본기 심화학습 막바지에 병행)
프로젝트 설계, 주제 선정을 진행합니다. 프로젝트 주제는 정합성이 필요하거나, 복잡한 조회 로직이 있는 프로젝트를 선택을 권장합니다.
성능 테스트 과정에서 동시에 API가 호출 되었을 때, 정합성이 깨지거나, 성능이 느려지는 현상에 대해서 다방면으로 경험하게 하기 위함입니다.
Step 03. TS+Nest.js 웹 서버 프로젝트 (3주)
학습한 이론을 활용하여 프로젝트 퀄리티를 높히는 방법에 대해 학습합니다.
소스 코드의 겉모습은 비슷하지만 누구는 빅테크 기업에 입사하고, 누구는 아닌 이유는 프로젝트에서 한 고민의 깊이가 크게 차이나기 때문입니다. F-Lab 멘토링의 포트폴리오는 모두를 위해 공개되어 있지만, 그 소스 코드를 유사하게 따라하더라도 같은 성과를 내지 못하는 이유는 직접 창조한 코드가 아니기에 면접에서 코드의 의도를 깊이있게 말할 수 없기 때문입니다.
정말 깊이있게 고민하고 코드를 작성한 프로젝트란 어떤 것인지, 어떻게 할 수 있는지 익히기 위한 프로젝트를 진행합니다.
진행 원칙
•
흔한 포트폴리오를 만들지 않게 하기위해 프로젝트 주제는 멘티가 정합니다. 멘토님은 그 주제에 대해 깊이있게 고민할 수 있도록 본인의 경험을 전달하며 가이드를 드립니다.
•
프로젝트는 기능을 1개만 만들더라도 수준 높게 만드는 것을 목표로 합니다.
•
비즈니스 로직의 구현과, 인증을 구현합니다.
•
DB 이해도의 중요성과 이후 이어지는 성능 테스트에서 책에서만 읽던 이론을 체감하면서 DB 이해도를 크게 높일 수 있게 됩니다.
◦
만약 정합성이 덜 중요하거나, 복잡도가 낮은 비즈니스 로직 구현이 많다면, 성능 테스트 이전의 프로젝트 심화에서 보강하게 됩니다.
진행 내용
•
멘토님의 코드 리뷰를 통해 이론을 코드에 적용하는 법과 더 좋은 코드를 작성하는 법 학습
•
Scale Up / Scale Out 비교를 통한 서버의 확장성 고려해보기
•
로그인을 구현해보며 서버가 확장됨에 따라 생기는 문제점과 트레이드 오프를 고려하여 깊은 고민을 경험해보기
•
캐싱을 적용해보며 글로벌 캐싱과 로컬 캐싱, 캐싱 기술들에 대한 트레이드 오프를 고려하여 고민을 경험해보기
•
정의한 기능을 멘토님과 함께 구현해보며 그 기능의 퀄리티를 높힐 수 있는 다양한 방법을 고민해보기
이제는 AI 시대이기에 프로젝트를 할 때 반드시 AI를 접목한 기능을 하나 이상 만듭니다.
LLM을 활용한 서비스 만들기
1.
LLM API 연동하기
2.
API 교체가 용이하도록 LLM 연동 모듈 추상화시키기
3.
구현하고자 하는 기능에 LLM을 활용하기 위한 프롬프트 엔지니어링과 관리 방법 익히기
4.
LLM을 활용할 때 기술/UX 부분에서 고려해야할 점
a.
응답속도가 느린 API 사용 시 동기/비동기 처리 전략
b.
사용자 체감 속도 개선 방안의 실습
5.
챗봇을 만들 때 기술/UX 부분에서 고려해야할 점
Step 04. 배포 (1주)
코드의 변경사항을 자동으로 빌드하고 테스트하기 위해 CI를 구성합니다. 이를 통해 자동화와 소스 코드 통합에 대해 학습합니다.
진행 내용
•
Docker 빌드를 권장하나, PM2 등으로 동작해도 좋습니다.
•
Jenkins 혹은 Github Action 등의 툴로 빌드를 자동화합니다.
◦
Github Actions를 권장하는데, 이유는 Github로 프로젝트를 진행하므로 조금 더 구축 코스트가 적기 때문입니다.
•
코드가 Push될 때마다 자동으로 빌드를 실행함으로써 코드의 동작을 확인할 수 있습니다.
Step 05. 성능테스트(2주)
대용량 트래픽을 처리해내기 위해선 주어진 하드웨어 내에서 최대한의 성능을 이끌어낼 수 있는 능력을 갖추고 있어야 합니다.
이를 위해 내가 구성한 서버가 얼마나 많은 트래픽을 받아낼 수 있는지 배포한 서버에 성능 테스트를 진행합니다. 그리고 모니터링 도구들을 활용하여 CPU, 메모리 지표와 Node.js 지표 등 여러 성능 지표를 확인하고 이를 기반으로 성능을 튜닝해 나갑니다.
이 과정을 바탕으로 멘토링이 종료되고 나서도 지속적으로 성능 테스트와 튜닝을 진행할 능력을 갖추게 됩니다.
진행 환경
•
10~100만 건의 데이터를 만들어내는 과정에서 다양한 도구와 방법을 통해 환경 구성에 대한 이해도를 높여줍니다.
•
동시에 100건만 처리해도 값이 달라졌을 때 문제가 될 수 있는 로직이 있다면, 이에 대한 테스트를 먼저 진행합니다.
◦
예를 들어 송금 요청, 송금 금액 계좌에 이동 같은 작업을 동시에 요청했을 때, 정합성이 잘 맞춰지는지도 성능 테스트 과정에서 DB 이해도나 동시성 문제를 체감하기에 좋습니다.
진행 내용
•
nGrinder를 이용한 부하 테스트
•
Pinpoint 나 Elastic APM 등 APM을 이용한 어플리케이션 모니터링
•
Node.js Trace Events, v8 프로파일러, ndb, Clinic.js 등의 도구를 통해서 Node.js 프로파일링을 이해합니다.
•
수행 건 수 만큼 정확히 값이 일치하는지 확인하게 됩니다.
◦
100번 수행된 쿼리의 결과가 100이 아니라 80이 나오는 등의 오차가 발생하는지, 그렇다면 왜 그런 것인지, 이를 방지하기 위해선 어떻게 해야하는지 등의 경험을 할 수 있습니다.
Step 06. TS+Nest.js 웹 서버 프로젝트 심화 (3주)
단위 테스트와 비즈니스 로직 테스트를 작성하게 됩니다. 이미 성능 테스트 과정에서 오류를 많이 확인했겠으나, 이러한 문제를 선행해서 잡을 수 있는 방안으로 테스트 코스트를 낮추는 방법을 알게 됩니다.
또한 더 복잡한 로직을 작성해, 실제 프로덕트에서 발생 가능한 문제가 생길 수 있는 문제를 구현하게 합니다.
•
정합성이 필요한 DB 로직
•
복잡한 쿼리, 복잡한 조건의 조회 로직
쿠팡, 다나와 등을 보며 복잡한 조건에 대한 쿼리가 들어가는 조회 API를 구현해볼 수 있습니다.
진행 내용
•
단위 테스트 코드를 통해서, 버그를 낮출 수 있는 방법을 체감할 수 있습니다.
•
@nestjs/testing을 통해서 컨트롤러와 서비스를 테스트 하는 방법을 숙지하고, 이를 통해서 비즈니스 로직의 완성도를 검증합니다.
◦
이러한 테스트를 CI에도 녹여서, 배포 전에 테스트 통과를 검사합니다.
•
실제 비즈니스에서 겪을 수 있는 복잡한 비즈니스 로직을 작성해봅니다.
Step 07. 성능 테스트 심화 (3주)
성능 테스트를 깊게 파고듭니다. 데이터 건 수를 늘려서, 부하가 발생할 수치가 많은 데이터를 다루는 방법에 대해서 접근합니다.
진행 내용
•
데이터를 구성하는 과정의 경험을 하게 됩니다.
◦
데이터의 정합성도 체크하게 됩니다.
◦
10만 건 시도 했는데, 8만 건만 쌓였다던지 한다면 그 원인 파악을 하게 됩니다.
•
1천만 건~5억 건 이상의 데이터로 테스트해보게 됩니다.
◦
데이터의 건 수는 테스트하는 머신 스펙에 따라 달라지므로, 인덱스가 히트할 때 조회 시간이 10ms 이상 걸리는 수의 데이터까지의 세팅을 고려하게 됩니다.
•
동시에 조회가 일어날 때, 조회와 삽입/삭제가 동시에 일어날 때를 같이 확인합니다.
•
인덱스를 바꿔보면서, 인덱스에 대한 이해도를 높여 갑니다.
◦
클러스터드 인덱스, 넌 클러스터드 인덱스에 따른 차이
◦
커버링 인덱스
◦
부분 인덱스
▪
다양한 인덱스 방법을 통해서 성능이나 개념, DB에 대한 이해도를 높입니다.
•
(복잡한 비즈니스 로직 구현 방향에 따라서) 풀 텍스트 서치도 구현함으로써, 문자열 포함 여부 검색 성능 개선을 경험합니다.
◦
이 과정에서, 검색 엔진의 기본 원리에 대한 비유를 통해 이해합니다.
•
(시간 여유가 되는 경우) 동일한 상황에서, 샤딩이나 레플리카 구성을 통해서 성능이 어떻게 달라지는지 확인할 수 있습니다.
•
과정 중에서 자연스럽게 실행 계획에 대해서 학습하며, 가능하다면 실행 계획과 실제 쿼리 성능의 차이가 나는 상황도 경험하며 이에 대해 파악하게 됩니다.
(연장시) 심화코스 진행
7단계까지 진행했다면 깊이있게 개발하는 방법을 익혀 스스로 성장할 수 있는 상태가 되셨을 겁니다. 하지만 더 많은 것들을 해보고 싶으시다면 연장 멘토링을 통해 심화코스를 계속 진행하실 수 있습니다.
진행 내용
•
MSA
◦
서버간 통신
▪
MQ
•
RabbitMQ
•
Kafka
•
BullMQ
▪
gRPC
▪
REST API
▪
WebSocket
▪
등등
•
컴퓨터 과학 기초 ++
◦
말록랩
◦
운영체제 가볍게 만들어보기
◦
운영체제 원리 관련 미니 프로젝트
◦
기타 다양한 컴퓨터 과학 기초 이해도를 높이는 프로젝트 수행
•
기초 위주 실습 프로젝트
◦
웹 서버 구현 해보기
◦
드라이버 이용한 쿼리 수행
•
비동기 심화
◦
동기 -> 비동기로 성능 비교
•
K8S
•
분산 디비
◦
MongoDB
•
MetricDB
•
GraphDB
•
GraphQL
공통 커리큘럼
F-Lab 멘토링은 단순히 정해진 요구사항을 따라 구현하는 프로젝트 멘토링이 아닙니다.
모든 과정에서 이론을 기반으로, 스스로 생각하게 만들어 이유를 고민할 수 있도록 훈련합니다.
이를 통해 “왜 이렇게 설계했는지”, “왜 이 기술을 선택했는지”를 명확히 설명할 수 있는 개발자로 성장하게 됩니다. 이러한 접근 방식이 F-Lab 멘티들의 포트폴리오와 면접 결과가 좋은 이유입니다.
상위권 개발자로 성장하기 위한 커리큘럼의 큰 틀은 정해져 있으나, 멘티의 상황 분석과 현재 수준·목표에 맞추어 유연하게 조정하며 진행됩니다.
멘티의 학습 속도와 상황에 따라 커리큘럼 진행 기간은 달라질 수 있습니다.
멘토링 기간 내에 정규 커리큘럼 외에도, 필요한 시점에 멘토님께 이력서 피드백, 모의 면접을 요청할 수 있으며, 합격 이후의 회사 선택 기준, 처우 협상 방법, 커리어 방향성에 대해서도 조언을 받을 수 있습니다.
멘토님은 단순한 강사가 아닌, 멘티의 상황에 맞춰 함께 고민하는 ‘멘토님’의 역할을 수행합니다.
멘토링 수료 이후에는 F-Lab 커뮤니티를 통해 지속적인 성장과 커리어 지원을 받을 수 있습니다.
커뮤니티에서는 성장과 효과적인 구직을 주제로 한 세미나를 지속적으로 운영하며, 수료생 간 스터디, 네트워킹, 모각코, 알고리즘 스터디 등이 활발히 이루어집니다.
또한 멘토님들도 커뮤니티에 함께 참여하고 있어, 멘토링 종료 이후에도 높은 수준의 피드백과 자극을 지속적으로 받을 수 있습니다.
