백엔드 커리큘럼
멘티분 경험에 맞춰 커리큘럼을 맞춰 진행합니다. 😄
0-1. 공통 기술 스택
백엔드 개발에 필요한 기본 기술 스택을 소개합니다. 이 기술들은 모든 프로젝트의 기반이 되며, 견고한 기초를 쌓는 데 중요합니다.
-
언어: Java or Kotlin
Java는 안정성과 보안성이 뛰어나며, 대규모 프로젝트에서 많이 사용됩니다. Kotlin은 간결함과 현대적인 기능을 제공하며, Java와의 상호 운용성이 우수합니다. Kotlin의 문법을 학습하고 Java와의 차이점을 이해합니다. -
프레임워크: Spring
Spring은 DI(Dependency Injection), AOP(Aspect-Oriented Programming) 등을 제공하며, 다양한 기능을 통해 대규모 프로젝트에서 사용되는 강력한 프레임워크입니다. -
DB: MySQL
관계형 데이터베이스 시스템인 MySQL을 사용하여 데이터베이스 설계, 관리, 최적화 기법을 학습합니다. -
ORM: JPA (Java Persistence API)
JPA를 사용하여 객체와 관계형 데이터베이스 간의 매핑을 학습하고, JPQL(Java Persistence Query Language) 및 영속성 컨텍스트를 이해합니다.
0-2. 취업준비
매주 과제와 미션이 주어질텐데 단순히 학습으로 끝나는 게 아니라 실제로 자소서, 면접에 어떻게 활용하면 좋을 지 스토리를 같이 만들어 드립니다. 😉
-
스토리텔링과 자기소개서 작성
프로젝트 경험을 바탕으로 자기소개서와 포트폴리오를 구성하여, 자신의 강점을 효과적으로 전달하는 방법을 익힙니다. -
면접 대비 기술 질문 준비
자주 등장하는 기술 면접 질문을 연습하고, 프로젝트에서의 문제 해결 사례를 통해 면접관에게 깊은 인상을 남기는 방법을 배웁니다. -
모의 면접 및 피드백 세션
모의 면접을 통해 실전 감각을 기르고, 피드백을 통해 개선할 점을 찾아보는 시간을 갖습니다.
1. 프로젝트: 결제 서버 개발
결제 기능을 담당하는 서버를 개발합니다. 서비스 회사에서는 어떤 부분에 주의하며 어떻게 운영을 위한 장치들이 있는지 함께 배우게 됩니다.
프로젝트 킥오프 및 기초 학습
프로젝트에서 가장 많이 사용되는 MVC 구조의 프로젝트 경험을 쌓습니다.
-
MVC 패턴 이해와 적용
MVC(Model-View-Controller) 패턴을 사용하여 백엔드 구조를 설계합니다. 각 레이어의 역할과 책임을 이해하고 프로젝트에 적용합니다. -
멀티 모듈 프로젝트 구성
멀티 모듈이란 개념에 대해 학습하고 실제로 프로젝트에 멀티 모듈로 프로젝트를 구성해 봅니다.
예외 처리 및 에러 코드 정의
서비스를 운영하다 보면 언제나 예외는 발생할 수 있습니다. 안정적인 서비스 운영을 위한 예외 처리 전략을 학습하고, 적절한 에러 코드를 정의합니다.
-
예외 처리 전략 학습
서비스 운영 중 발생할 수 있는 예외를 처리하는 방법을 배우고, 상황에 맞는 예외 처리 전략을 수립합니다. -
ErrorCode 정의 및 적용
서비스에 적합한 ErrorCode를 정의하여 클라이언트와의 명확한 커뮤니케이션을 가능하게 합니다.
CI/CD 파이프라인 구축
매번 개발자가 수동으로 코드를 배포하는 건 굉장히 귀찮은 작업입니다. 😂 그러므로 CI/CD라는 개념에 대해 학습하고 AWS 서비스를 사용하여 실제로 Github Action을 사용해 CI/CD 배포를 경험해 봅니다.
-
CI/CD 개념 이해 및 도구 학습
CI/CD(Continuous Integration/Continuous Deployment)의 기본 개념을 학습하고, Jenkins, GitHub Actions와 같은 도구를 사용하여 자동화 파이프라인을 구축합니다. -
AWS 서비스를 활용한 CI/CD 구현
AWS 환경에서의 CI/CD를 설정하고, GitHub Actions를 사용해 배포를 자동화합니다. 클라우드 기반의 배포 프로세스를 이해합니다.
프로젝트 고도화 및 로깅
Spring의 기능을 사용하여 프로젝트를 고도화해 보는 경험을 쌓습니다. 또한 운영의 꽃인 Log를 위한 Logback 설정을 함께 합니다.
-
Spring Annotation 정의 및 AOP 적용
필요한 Annotation을 정의해 보고 그 Annotation과 스프링의 AOP(Aspect-Oriented Programming) 기능을 함께 사용합니다. 코드의 재사용성과 유지보수성을 높입니다. -
Logback을 활용한 로깅 설정
Logback을 사용하여 로그를 설정하고, 운영 환경에서 필요한 로그 전략을 수립합니다. 로그를 통한 문제 추적과 분석 방법을 학습합니다.
비동기 프로그래밍 및 프로파일 관리
때로는 효율을 위해서 비동기 프로그래밍이 필요합니다. 비동기 프로그래밍과 프로파일 관리 방법을 학습하여 성능을 최적화합니다.
-
비동기 프로그래밍 학습
Java의 CompletableFuture와 Spring의 비동기 처리 방법을 학습하여 성능을 향상시키는 방법을 익힙니다. -
Multi Profile 설정
로컬 개발과 운영을 위해 Profile을 분리해야 하므로 Multi Profile이란 개념에 대해서도 학습을 합니다. 환경에 따라 설정을 달리하여, 유연한 운영 환경을 구성합니다.
API 클라이언트와 이벤트 기반 설계
외부 서비스로 API 요청을 위해서 다양한 Client 중에서 Feign Client를 사용해 보는 시간을 갖습니다. 외부 API 클라이언트와 이벤트 기반 설계를 통해 서비스의 확장성을 높입니다.
-
Feign Client를 활용한 외부 API 통신
다양한 HTTP 클라이언트 중 Feign Client를 사용하여 외부 API와 통신하는 방법을 배우고, 이를 프로젝트에 적용합니다. -
Spring Event 학습 및 적용
Spring Event 개념을 학습하면서 어떤 경우에 우리는 Event를 발행하면 좋을 지에 대해 알아보는 시간을 갖습니다. 이벤트 발행과 수신을 통해 비동기 처리와 시스템 확장성을 강화합니다.
2. 프로젝트: 알람 서버 개발
알람 기능을 담당하는 서버 개발을 통해 MSA 설계에 대한 경험을 합니다. 또한 대규모 트래픽을 위해 사용되는 인프라를 학습합니다.
DDD와 헥사고날 아키텍처
요즘 핫한 DDD + 헥사고날의 프로젝트 경험을 쌓는 시간을 갖습니다. 😃 도메인 주도 설계(DDD)와 헥사고날 아키텍처를 통해 백엔드 구조를 설계합니다.
-
DDD(Domain-Driven Design) 학습
DDD의 기본 개념을 학습하고, 실제 프로젝트에 적용하여 도메인 모델을 설계합니다. -
헥사고날 아키텍처 이해 및 적용
헥사고날 아키텍처를 통해 유연하고 확장 가능한 시스템을 설계합니다. 의존성 역전 원칙을 이해하고, 이를 기반으로 한 아키텍처를 구현합니다. -
Kafka 기초 학습
프로젝트에 필요한 기술 스택인 Kafka를 위한 학습을 미리 진행합니다. 대규모 데이터 스트리밍을 이해하고 준비합니다.
대규모 트래픽 아키텍처 및 Redis 적용
대규모 트래픽을 위한 아키텍처에 대해 본격적으로 알아보는 시간을 갖습니다. 대규모 트래픽을 처리하기 위한 아키텍처와 Redis 활용 방법을 학습합니다.
-
대규모 트래픽 아키텍처 설계
대규모 트래픽을 효율적으로 처리하기 위한 아키텍처를 설계하고, 필요한 인프라를 학습합니다. -
Redis 학습 및 적용
Redis를 사용하여 캐싱 및 데이터 저장소로 활용하는 방법을 배우고, 프로젝트에 적용합니다.
Kafka를 활용한 데이터 스트리밍
대규모 트래픽을 위한 기술 스택인 Kafka를 프로젝트에 적용해 보는 시간을 갖습니다. Kafka를 사용하여 데이터 스트리밍을 구현하고, 실시간 데이터 처리를 경험합니다.
-
Kafka 개념 이해 및 프로젝트 적용
Kafka의 기본 개념을 이해하고, 이를 프로젝트에 적용하여 실시간 데이터 스트리밍을 구현합니다. -
Kafka와 Spring의 통합
Spring Kafka를 사용하여 Kafka와의 통합을 구현하고, 메시지 큐를 통한 데이터 처리를 경험합니다.
성능 테스트 및 부하 테스트
서비스를 완성하고 나면 우리 서버가 얼마만큼의 TPS를 버텨낼 수 있을지 알아야 합니다. 서버의 성능을 측정하고, 부하 테스트를 통해 안정성을 검증합니다.
-
성능 테스트 및 분석
서버의 성능을 측정하고 분석하여, 병목 지점을 찾아 최적화하는 방법을 학습합니다. -
부하 테스트 도구 학습 및 적용
JMeter 등 부하 테스트 도구를 사용하여 서버의 TPS(Transactions Per Second)를 측정하고, 서버의 한계를 이해합니다. -
최종 프로젝트 리뷰 및 개선
프로젝트의 성과를 리뷰하고, 개선할 점을 찾아 프로젝트를 최종적으로 다듬습니다.
Next Pro 커리큘럼에 질문이 있으신가요?
아래 Kakao 오픈 채팅방을 이용해주세요. 여러분들의 질문에 친절히 답변해드립니다.
이메일 문의: next.pro.master@gmail.com