/Server

당신의 모든 모임과 함께할, '나모'

Primary LanguageJava

Namo Server

banner

목차

-🛠️ 나모는 이런 기술을 사용했어요 - For Code - For Infra

🛠️ 나모는 이런 기술을 사용했어요

For Code

SpringBootspring_data_JPAspring_security

Gradle

junit5test_containersmockito

MySQLRedisFlyway

For Infra

Amazon Ec2

DockerGitHub Actions

Amazon S3Amazon RDSAmazon ElastiCache

Route 53Amazon ALBNginxCloudFront

AWS IAMAWS Secrets Manager

Amazon CloudWatch

AWS Lambda

🔎 나모의 서버 구조

1️⃣ Service Code

System Architecture - Service-Logic

V1

[ Facade 패턴을 통한 클린 아키택쳐 구현을 노력했습니다.. ]

  • 초록: 외부와 연결되는 레이어
  • 빨강: 비지니스 로직을 다루는 레이어
  • 노랑: 도메인 레이어

[ 참조의 방향은 항상 화살표 방향을 따릅니다. ]

  • 코드의 의존성에 규칙을 두어 코드의 결합도가 올라가지 않도록합니다.
  • 특히 Facade와 Converter의 사용을 통해 API 인터페이스와 내부 로직을 철저히 분리합니다.

v2

[ usecase와 ManageService를 도입했습니다. ]

image
  • 기존 Facade의 많은 의존성이 걸리며 유지보수가 힘들어져 새로운 방법을 도입했습니다.
  • manageService가 인력사무소의 관리 소장과 같은 역할을 합니다.
  • 각 Usecase에서 각 액션에 대한 행동들을 조합해 사용합니다.

Continue.... 아직 완전한 클린 아키텍처가 되지 못해 한계를 느끼고 계속 더 나은 설계를 하기위해 노력하고 있습니다.

2️⃣ Infrastructure Architecture

System Architecture - Infra

3️⃣ Multi-Module Architecture

System Architecture - Multi-Module

  • application: 모듈은 외부에 제공되는 API와 관련된 기능을 제공한다.
  • clients: 모듈은 프로젝트 외부 서비스의 API를 호출하는 기능을 제공한다.
  • storage: 모듈은 데이터베이스와 관련된 기능을 제공한다.
  • core: 다양한 모듈에서 공통적으로 사용되는 기능을 제공한다.
  • support: 모듈은 프로젝트에 독립적으로 사용될 수 있는 기능을 제공한다.

✍🏻 나모 서버 팀원들은 이렇게 작업해요

캐슬/이호성

다나/서주원

매실/김현재

루카/최선규

초코/김현지