강의

멘토링

로드맵

로드맵 썸네일

토비의 클린 스프링

작성자 프로필 이미지

Zin

Java
Spring
Spring Boot

초급 대상

로드맵 참여중인 유저 프로필 사진
로드맵 참여중인 유저 프로필 사진

1,818명 참여중

조회수

27,900

로드맵 코스

토비의 클린 스프링 🌱


인프콘 2024에서 토비가 발표한 🔗<클린 스프링: 스프링 개발자를 위한 클린 코드 전략>에서 예고했던 클린 스프링 강의 시리즈의 로드맵을 공개합니다! 🎉

토비의 클린 스프링스프런(Splearn)이라는 온라인 교육 서비스를 개발하고 운영하는 가상의 스타트업 개발팀이 단계적으로 클린 코드와 스프링 개발 원칙을 따라서 빠르고, 안정적이면서 유연하고, 유지보수하기 좋게 개발하는 과정을 실제 업무 진행과 유사한 방식으로 경험할 수 있도록 하는 강의입니다.

토비의 클린 스프링 로드맵의 강의를 수강하는 분은 토비와 함께 개발팀이 됩니다. 새로 시작된 스타트업의 서비스가 처음 만들어지고, 시간이 지나며 성장하는 동안에 매 단계에서 어떤 것을 고려하고 결정하며 빠르게 적용해나가는지를 체험할 수 있습니다. 어떤 기술과 접근 방법이 문제를 풀기 위해 언제 등장하게 되는지를 함께 고민하고, 주어진 상황에서 최선의 선택과 트레이드 오프가 어떻게 이루어지는지 함께 보고 경험할 수 있습니다.


"Clean code that works."

- Ron Jeffries


TDD(Test Driven Development)로 유명한 켄트 벡의 테스트 주도 개발 책의 서문에 처음 등장하는 작동하는 깔끔한 코드(Clean code that works)라는 말은 클린 코드를 바르게 추구하는 가이드가 되어줍니다.

읽기 좋은 코드, 이해하기 좋은 코드, 확장하기 좋은 코드, 유지보수 하기 좋은 코드라는 클린 코드가 추구하는 핵심 원칙은 결국 유지보수성이 좋은 코드를 빠르게 만들고, 계속해서 기능을 추가하고 유연하게 확장해야 하는 서비스와 제품 개발팀이 추구해야 할 최선의 가치입니다.

스프링의 최신 기술과 다양한 디자인 패턴, 모던 아키텍처, 좋은 개발 습관 등을 적용해서 개발하는 토비의 클린 스프링의 여정에 함께 해보시고 싶다면 이 로드맵에 참여하고 앞으로 출시될 강의들을 기대해주세요! 😉


※ 모든 강의는 출시 예정으로 추후 순차적으로 공개 됩니다.

인프런(Inflearn)의 강력한 경쟁 서비스가 되고 싶은 스프런(Splearn)을 개발하는 스타트업이 처음 개발 요구사항을 정리하고, 이를 도메인 모델로 설계해서 개발을 시작하는 과정을 담은 강의입니다. 스프링을 이용한 API 백엔드 프로젝트를 시작할 때 필요한 프로젝트 구성과 패키지 구조, 그리고 아키텍처가 어떻게 어떤 이유로 결정이 되는지를 살펴보실 수 있습니다.

헥사고날 아키텍처는 어렵고 복잡한 아키텍처가 아닙니다. 스프링이 오래전부터 추구해온 개발 원칙과 가이드를 지키면서 개발하면 자연스럽게 헥사고널 아키텍처가 이에 가장 잘 들어 맞는 아키텍처임을 알 수 있습니다. 적응성(adaptability)과 테스트용이성(testability)라는 헥사고날 아키텍처의 특징이 어떻게 처음 개발을 빠르고 안정적으로 가능하게 하는지를 스프런의 첫 개발 과정을 통해서 설명합니다.

도메인 모델 패턴과 헥사고날 아키텍처 Part 1

  • 회원 기능을 중심으로 핵심 개발 전략과 원칙, 실천 방법을 설명합니다.

  • 도메인 모델을 만들고 이를 이용해서 도메인 코드를 작성합니다.


  • 헥사고날 아키텍처로 응집도가 높고 적응성이 뛰어나고 테스트 용이성을 가진 애플리케이션 개발 구조를 만듭니다.

  • JPA 기술을 도메인 모델과 함께 효율적으로 활용하는 방법과 애그리거트 기반의 모듈 구성을 다룹니다.

  • 안전한 리팩터링을 가능하게 하는 테스트 코드 작성법과 다양한 도구를 소개합니다.

도메인 모델 패턴과 헥사고날 아키텍처 Part 2

  • 초기 도메인 모델 분석에서 찾은 나머지 주요 개념에 대한 애플리케이션 개발을 진행합니다.

  • 도메인 모델을 더 깊이 살펴보고 더 나은 설계를 발견해서 모델을 개선해봅니다.

  • 복잡한 도메인 로직을 도메인 모델 패턴을 이용해서 정확하고 빠르게 개발합니다.

  • 더 다양한 리팩터링 기법의 활용과 테스트 코드 생산성을 올리기 위한 도구를 만들어 봅니다.

도메인 이벤트와 스프링 시큐리티

서비스가 성장하면서 새로운 기능이 계속 추가됩니다. 기능의 추가와 변경이 일어나도 핵심 기능을 다루는 코드는 안정적으로 유지될 수 있게 해주는 여러가지 개발 전략을 다루는 강의입니다.

도메인 이벤트를 활용해서 장기적으로 이벤트 주도 아키텍처(EDA)로 발전할 수 있는 기초를 준비합니다. 이전에 개발한 코드에서 발견되는 서비스 사이의 강한 의존 관계가 이벤트를 통해서 어떻게 바뀌는지, 이게 어떤 장점이 있는지를 볼 수 있습니다.

스프링 시큐리티를 도입해서 보안 기능을 강화하고, 제한된 사용자에게만 허용된 기능을 테스트하는 코드를 쉽게 개발할 수 있도록 스프링 테스팅 프레임워크를 확장하는 방법을 다뤄봅니다.

멀티 모듈과 성능 최적화

싱글 모듈로 시작한 프로젝트 코드를 Gradle을 이용한 멀티 모듈 구조로 변경합니다. 모듈을 어떤 방식으로 분리하는 것이 좋은지, 이때 지켜야할 할 의존관계 원칙은 어떻게 되는지를 설명합니다.

지금까지 만들어온 API 서비스 외에 관리자 서비스를 추가로 개발합니다. API가 아닌 서버 렌더링 방식의 뷰 기술을 이용하는 개발을 진행합니다.

사용자가 많이 늘면서 DB의 부하가 커지고, 서비스 기능의 성능이 떨어집니다. 이를 극복하기 위해서 데이터를 조작하거나 조회하는 JPA 코드와 DB를 모니터링하고, 성능을 개선하기 위한 작업을 수행합니다. 또, 캐시를 활용해서 조회 성능을 최적하하는 방법도 설명합니다.

스프링 모듈리스를 이용한 모듈화

스프런(Splearn)이 발전하면서 핵심 기능 외에 각종 부가 기능과 서비스가 추가되고 코드가 무거워졌습니다. 이로 인해서 코드의 의존관계가 복잡해지고 유지보수성이 떨어질 위험을 감지하게 됩니다. 여기서 더 성장하게 된다면 어떤 문제가 발생할지, 또 개발자가 늘어나고 여러 개발팀으로 나뉘어 개발하게 된다면 기존의 코드를 어떻게 다뤄야할지를 해결해야 합니다.

스프링 모듈리스는 동일 코드 베이스와 배포 단위를 유지하면서도 모듈별로 독립성을 가지고 개발하고 구성할 수 있는 멋진 스프링 기술입니다. 스프링 모듈리스를 이용해서 모놀리스의 장점과 마이크로서비스(MSA)의 특성을 동시에 가진 애플리케이션을 개발해봅니다.

MSA와 스프링 클라우드

서비스가 성숙하고 트래픽이 높아지고 개발 조직이 성장하면서 마이크로서비스(MSA)의 도입이 요구되었습니다. 현재 서비스를 유지하면서 마이크로서비스(MSA)로 전환하는 과정과 이때 주의해야 할 것들, 데이터베이스의 분리와 테스트, 배포의 문제를 스프링과 클라우드 기술을 이용해서 어떻게 다뤄야 할지를 설명합니다.

스프링이 제공하는 각종 클라우드 도구와 서비스들을 활용해서 클라우드의 장점을 살린 서비스로 성장시키는 시도를 해봅니다. 잘 알려진 퍼블릭 클라우드를 사용하는 경우와 비교하면서 스프링 클라우드를 어떤 이유로, 어떤 시점에 도입할지에 대해서 생각해봅니다.

관측성

서비스 개발과 운영에 중요한 피드백을 주고 빠르게 대응할 수 있게 해주는 관측성(observability) 기술을 본격적으로 도입해봅니다. 스프링 부트가 제공하는 메트릭를 수집하고 이를 모니터링해서 서비스의 신뢰성, 성능, 보안을 파악하고 각종 이상을 감지합니다. 수집된 로그를 통해서 문제의 원인을 확인하고 이를 개선해서 적용하고 결과를 측정하는 관측성 도구의 활용을 다룹니다.

마이크로미터, 프로메테우스, 로키, 그라파나 등을 이용하고, 다양한 커스텀 메트릭을 정의해서 모니터링하고 활용하는 과정을 경험할 수 있습니다.

클린 코드의 선순환 💡

작동하는 클린 코드를 추구하면 유지보수성과 생산성이 서로 긍정적인 영향을 주기 때문에 어느 한쪽을 포기하지 않고 나아가도 됩니다. 유지보수성이 좋은 코드는 빠르게 기능을 추가하거나 변경할 수 있습니다. 빠르게 변경된 코드는 개발 생산성이 좋아집니다. 그리고 다시 유지보수성이 좋은 코드를 만들기 위해 리팩터링을 합니다. 이런 순환 과정에서 코드는 언제든 유지보수성이 좋고, 생산성이 높은 코드의 상태를 유지할 수 있습니다.



그래서 유지보수성과 생산성의 균형을 잡아줄 리팩터링이 중요합니다. 그리고 리팩터링에 꼭 필요한 테스트를 작성해야 합니다. 하지만 테스트를 만들면서 생산성을 놓칠 수는 없습니다. 그래서 테스트를 빠르고 효과적으로 작성하면서 개발하는 능력이 필요합니다. 토비의 클린 스프링 로드맵 강의에서는 한 번에 이상적인 코드를 만드는 것이 아니라, 작은 스텝을 밟아 가면서 기능을 개선하고 리팩터링 하는, 실무에서 일어나는 개발 방법과 유사한 방식으로 개발을 진행하는 모습을 보여 드릴 것입니다.

탐험 🧭

현장의 실무 개발은 혼자가 아니라 팀으로 일하는 동료와 함께하게 됩니다. 이 때 필요한 것이 팀워크입니다. 팀이 협력하여 개발하는 팀워크 또한 유지보수성생산성만큼 동작하는 클린 코드에 필요한 중요한 요소입니다.


온라인 강의를 통해서 팀워크를 표현하는 것은 쉽지 않습니다. 하지만 팀이 함께 새로운 서비스를 개발하는 과정에 필요한 각종 의사결정, 그리고 새로운 접근 방법과 기술에 대한 탐험, 그리고 이를 통해 새로운 것을 학습하고, 성장하는 것이 어떻게 일어나는지는 경험할 수 있습니다. 매 단계 결정을 하고, 개발을 마친 후 나온 결과를 살펴보면서 무엇을 배울 수 있었는지, 다음 단계에서는 또 어떤 결정을 하게 될지를 같이 생각해보려고 합니다.


토비의 클린 스프링을 통해서 토비와 함께 팀이 되어 탐험하고 학습하고 성장해보세요! 🪄

이런 분들께 추천드려요!


스프링의 기술을 학습하면서 실무에 어떻게 효과적으로 적용할 수 있는지 알고 싶어요.


스프링이 제공하는 다양한 기술을 익히고 활용하는 전략을 배우고 싶어요.


스프링 개발에 사용할 수 있는 다양한 아키텍처와 베스트 프렉티스를 학습하고 상황에 맞는 적절한 선택과 적용을 하고 싶어요.

질문 있어요!

Q. 스프링 개발 경험이 있어야 하나요?

기본적으로 Web API와 JPA를 이용한 스프링 애플리케이션을 개발한 경험이 있거나 학습한 경험이 필요합니다. 곧 출시되는 <토비의 리얼 스프링>을 통해 경험을 쌓아도 좋겠습니다.😄

로드맵 상세보기

4개 코스

로드맵에 포함된 외부링크 썸네일
YouTube
클린 스프링 - 소개
클린 스프링 로드맵에 대한 자세한 소개
로드맵에 포함된 강의 썸네일
가상의 스타트업 개발팀이 단계적으로 클린 코드와 스프링 개발 원칙을 따라서 빠르고, 안정적이면서 유연하고, 유지보수하기 좋게 개발하는 과정을 실제 업무 진행과 유사한 방식으로 경험할 수 있도록 하는 강의 시리즈인 클린 스프링의 첫 번째 강의입니다. 도메인 모델 패턴과 헥사고날 아키텍처를 활용해서 도메인 중심의 초기 개발 단계에서 필요한 기술과 개발전략을 익힐 수 있습니다. 

90,750

121,000

로드맵 코스 4