인프런 영문 브랜드 로고
인프런 영문 브랜드 로고
NEW

은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스

이 강의에서는 가상 결제서버를 통해서 코틀린을 마스터 할 수 있는 강의 입니다.

Thumbnail

입문자를 위해 준비한
[데이터베이스, 백엔드] 강의입니다.

이런 걸 배울 수 있어요

  • Kotlin

  • MySQL

  • MongoDB

  • OAuth2

  • Kafka

  • Redis

  • Concurrency Controll

은행 서버 프로젝트 실습을 통해 배우는 코틀린

단순히 코틀린 문법을 배우는 것을 넘어, 은행 서버에 대해서 샘플 프로젝트를 함께 작성하며 실무 경험을 쌓을 준비가 되셨나요?


이 강의에서는 코틀린의 간결하고 표현력 높은 문법으로 효율적인 코드 작성법을 익히고, Spring의 AOP 한계를 뛰어넘는 코틀린만의 해결책을 발견하며, 확장성 있는 로그 처리 방법을 학습합니다. 또한 Redis, Kafka, MySQL, MongoDB를 활용해 확장 가능한 서버를 직접 구현하고, 동시성 이슈 해결 방법을 실전에서 적용해봅니다.


금융 도메인에서 발생하는 문제는 다양하고 복잡합니다. 모든 내용을 한 강의에 담을 수는 없지만, 금융 도메인 진출을 희망하시거나 코틀린을 심화 학습하고자 하는 분들께 실무에서 진짜 고민하고 마주하는 문제들을 함께 해결해나가는 기회를 제공합니다.

이론으로만 끝나지 않고, 실제 서비스에 바로 적용 가능한 기술을 여러분의 것으로 만들어 보세요. 함께 고민하고, 성장하는 시간이 될 것입니다.

Kotlin 왜 배워야 하지..?

Spring과 100% 혼용이 된다고 말하며, Jetbrain에서 만든 Kotlin이라는 언어는 Spring에서 적합하지 않은 동시성 프로그래밍에 최적화되어 있습니다.

📚 간결하고 직관적인 문법


Kotlin은 간결하고 직관적인 문법을 제공하는 형태이기 떄문에 개발자가 더 적은 코드로 더 많은 작업을 수행 할 수 있습니다. 이는 가독성 향상의 효과가 있으며 요지보수가 더 용이하게 합니다.

📚 높은 생산성과 안전성


Kotlin은 널 안정성을 기본적으로 지원하여 널 포인터 예외(NullPointerException)를 줄일 수 있습니다. 또한, 함수형 프로그래밍을 지원하여 보다 기능적이고 선언적인 방식으로 코드를 작성할 수 있습니다. 이러한 기능들은 개발 생산성을 높이고, 버그 발생 가능성을 줄여줍니다.

📚 높은 호환성


Kotlin은 100% 자바와 호환되므로 기존 자바 프로젝트에 쉽게 통합할 수 있습니다. 이는 자바 개발자들이 Kotlin을 배우는데 큰 장벽이 없으며, 기존 코드를 유지하면서도 새로운 Kotlin 기능을 사용할 수 있다는 것을 의미합니다.

강의를 듣고 나면 이런 결과물을 만들 수 있어요

코틀린 문법을 활용한 API 구성

함수형 프로그래밍을 사용하는 코틀린에서는 문법을 어떻게 작성할까요?? 다양한 람다식도 지원하며 서버를 함께 구성하시게 됩니다.

Spring AOP를 극복하기 위한 코틀린 사용법

Kotlin은 Spring을 온전히 지원하지만, Spring에서의 AOP에 대한 한계는 분명하게 존재합니다.

Kotlin에서는 어떻게 이러한 한계를 극복할 수 있는지 같이 학습하시게 됩니다.

동시성 처리를 위한 락 관리

여러가지 인스턴스가 올라가 있는 환경에서는 클러스터간에 동시성 처리를 위한 작업이 필요합니다.

Redis, MySQL, MongoDB를 활용한 서버 구성

서버를 구성하는데에는 단순한 DB만 존재하는 것이 아닙니다. 캐시와 메시지 큐를 직접 활용하며 프로젝트가 구성됩니다.

OAuth2 인증 처리를 통한 API 보안

보안은 서버 구성에 있어서 가장 중요한 요인입니다.

해당 강의에서는 callBack처리를 통해 확장성 있는 Auth 처리에 대해서 다루게 됩니다.

Kafka를 활용한 메시지 큐 구현

MSA아키텍처, 큰 도메인 서비스라면 Kafka는 선택이 아니라 필수입니다.

실제 Kafka 활용 가이드를 함께 제공해 드립니다.

강의에서 다루는 기술 스택

MySQL

연관 관계가 있는 데이터를 다루기 위해서 관계형 데이터 베이스인 MySQL이 사용이 됩니다.

JPA구성하고, Entity를 작성하며 데이터간의 연관관계를 명시하는 코드 방식을 통해 서비스 개발에 대해 유연한 구조를 가져가시게 됩니다.

MongoDB

폴리글랏 퍼시스턴스 전략을 도입하여 들어오는 트래픽 유형에 따라 히스토리 데이터를 관리하기 위한 데이터 베이스로써 활용이 됩니다.

이러한 개념을 학습하시고 고려하시는것이 무엇인지에 대해서 다루고 있습니다.

Redis, Redisson

캐싱 툴을 도입하여 데이터 베이스에 대한 CPU 최적화 및 캐싱 처리로써 활용이 되고 있으며, 추가적으로 동시성 제어에 대한 Lock을 도입하여 적용하고 있습니다.

Kafka

메시지 기반의 아키텍처를 구현하게 됩니다. Procuer와 Consumer를 구성하며 함께 프로젝트를 구성해 나가실 수 있으며, Consumer의 확장성을 위한 코드 구현에 대해서도 다루게 됩니다.

Spring Security

Spring Securit를 활용하여 Token검증을 진행하고 이를 통해 요청에 대한 필터링을 선제적으로 적용하게 됩니다. 이러한 구조를 통해 리소스 효율성을 확보하는 방식으로써 서버를 구성하게 됩니다.

JWT

OAuth2 인증 이후, 해당 데이터를 기반으로 JWT 토큰을 관리하는 방법에 대해서 다루게 됩니다. 이후 JWT를 검증하는 과정을 Spring Security와 연동하여 허가된 사용자에 대한 요청만 처리하는 방법에 대해서 다루게 됩니다.

중요하게 여기는 4가지 가치관

1. 강의는 인간적이어야 한다.

전문성이 떨어지는 모습으로 여겨질지라도 보여주기 편한 강의는 강의가 아니라고 생각합니다. 디버깅도 진행하는 시간또한 강의의 일부 입니다.

2. 실무에 특화되어야 한다

개발은 말로하는것이 아닙니다. 실제 구현을 해보고 동작하는 과정을 함께 하실 수 있습니다.

  • 기획자분들... 살려주세요..

3. 수강생 분들에게 도움이 되어야 한다.

제가 실무에서 적용해서 효과를 보았던 개념들을 녹이고자 하였습니다. 이 과정을 통해서 실무를 간접적으로 체험하시거나 실무자라면 실무 환경에 더 뛰어난 퍼포먼스를 보여주실 수 있습니다.

4. 강의가 끝이 아니다.

강의를 진행하시면서 질의응답을 많이 남겨주시기를 바랍니다. 이 강의는 저 혼자만의 지식을 통해서 만들어지지 않았습니다. 다양한 대기업 개발자분들의 의견또한 취합되어 있습니다.

  • 강의 완성에 도움을 주신분들에 대한 간단한 이력은 다음과 같습니다.


data class Supporter( private val supported_one = "카카오페이 플랫폼 백엔드 개발자" private val supported_two = "토스증권 API 서버 개발자" private val supported_three = "비밀로 해달라는 유니콘 스타트업 서버 개발자" )

강의 구성도

섹션 2

실무를 경험하면서 다루었던 model관리에 대해서 간략하게 다루고 있습니다.

google의 설계패턴을 기반으로 어떠한 관점으로 type을 다루는것이 베스트일지에 대한 개인적인 견해가 들어가 있습니다.

섹션 3

OAuth2에 대해서 확장성 있는 코드를 구현하기 위한 코드 작업을 진행하게 됩니다.

OAuth2는 플랫폼 특징에 따라서 계속해서 추가 될 수 있는 기능입니다. 해당 기능을 인터페이스 처리를 통해서 어떻게 하면 확장성 있는 코드를 구현 할 수 있는지 알려드립니다.

섹션 4

해당 섹션에서는 Kotlin을 사용하여 Spring에서의 AOP의 단점을 극복하는 방법에 대해서 학습하게 됩니다..

Spring AOP는 여러분들이 모르시게 많이 적용되어 사용이 되는 개념입니다. 관례형 DB에 대한 데이터 영속성 보장에 사용이 되기도 하며, 추가적으로 PointCut을 활용한 로깅 처리에서도 활용이 되고 있습니다.

하지만 단점도 몇가지 존재하는 아쉬운 친구입니다. 이 섹션에서는 어떻게 Spring의 AOP를 코틀린에서 좀 더 유연하게 사용 할 수 있는지에 대해서 다루고 있습니다.

섹션 5

OAuth2에 대한 기능 구현과 AOP까지 적용을 마친 API를 작업하게 됩니다.

해당 과정을 통해서 여러분들이 저와함께 처음으로 구현하고 작성한 코드가 올바르게 동작하는지 확인하며, 이 과정을 통해서 디버깅하는 시간도 함께 가지게 됩니다.

섹션 6

좀 더 B2C 및 B2B에 어울리는 기능 작업을 위한 코드작업이 진행됩니다.

들어오는 트래픽에 따라서 특정 Service Logic을 실행시키면서 어떻게 기능을 구현하는지에 대해서 함께 구현하시게 됩니다.

@Service, @RestController 등을 사용하여 비지니스 로직을 함께 작성하시게 됩니다.

섹션 7

Redis는 실무에서 매우 중요한 요소입니다. 동시성을 제어하는데에 사용도 가능하고, 데이터에 대한 캐시처리를 통해 DB에 대한 CPU 최적화를 위해서 사용이 됩니다.

해당 섹션에서는 RedisRedisson 를 활용 할 수 있는 다양한 메서드를 작업하게 됩니다.

섹션 8

본격적으로 앞서 작성했던 Redis 관련 메서드를 활용하여 동시성 제어에 대한 로직을 작성하시게 됩니다.

동시다발적으로 들어오는 트래픽을 순차처리 하기 위한 Distributed Lock 을 함께 작성해나가며 데이터 영속성 보장을 위한 로직을 함께 작성 하는 시간이 될 예정입니다.

섹션 9, 10

이 시간에는 Kafka 에 대해서 직접 코드를 구현하시게 됩니다. Kafka의 Producer 를 활용하여 API상에서 발생하는 이벤트 변화를 처리하고, 서비스간의 느슨한 결합과 폴리글랏 퍼시스턴스 전략을 활용하는 코드로써 활용하시게 됩니다.


MongoDB에 대한 코드를 구현하고, 그에 따른 서비스 로직을 구현하게 됩니다. 또한 메모리 활용을 통해 DB에 대한 사용량을 줄이는 로직에 대해서 구현하며 다루게 됩니다.

섹션 11

Spring Security 를 활용하여 API에 들어오는 요청을 선행하여 처리하는 로직을 담당하게 됩니다.

이 과정이 관리해야하는 포인트가 늘어난다는 단점이 있지만, 그에 따라서 추가적인 자원을 최적화 할 수 있는 장점에 대해서 함께 구현합니다.

섹션 12, 13

새로운 모듈을 생성하여 Kafka의 Producer 를 처리하며 MongoDB, Redis 와 소통하는 로직을 구현하게 되고 그에 따라서 트래픽 유형에 맞는 데이터를 생성하는 과정을 다루게 됩니다. 이 시간을 통해서 여러분들은 느슨한 결합이 무엇인지, 메시지 처리 방식이 무엇인지에 대해서 학습하시게 됩니다.

수강 전 참고 사항

실습 환경

  • Macos M3를 사용하여 촬영되었습니다.

  • Docker를 기본적으로 사용합니다.

  • java --version : 17.0.12 2024-07-16 LTS

  • JetBrain 계열의 IDE를 사용합니다.

  • Gradle을 사용하여 빌드 합니다.

  • 인프라에 대해서는 다루지 않습니다.

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 코틀린이 처음이신 분

  • 프로그래밍에 대해서 학습 하고 싶으신 분

  • 동시성 제어가 궁금하신 분

  • API 서버에 대해서 궁금하신 분

  • 실무에서 사용하는 툴이 궁금하신 분들

안녕하세요
Hong입니다.

826

수강생

42

수강평

34

답변

4.4

강의 평점

6

강의

자기 소개

비전공자 출신으로 판교에서 플랫폼 서버 개발을 담당하여 진행하고 있습니다.

서버 최적화와 다양한 쿼리 튜닝을 좋아합니다.

 

해당 지식 공유자 계정은 Spring Boot을 주로 다루고 있습니다.

 

경력

[前] 샌드박스 블록체인 개발자

[前] 넥슨 자회사 백엔드 개발자

[前] 판교 대기업 플랫폼 서버 개발자

[] 판교 모회사 서버 개발자

더보기

커리큘럼

전체

50개 ∙ (9시간 2분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!