코딩 컨벤션이란?
코드를 어떻게 작성할 지 규칙을 정하는 것을 말한다.
간단한 정의이지만 막상 범위가 방대해 어디서부터 진행할지 막막한 느낌이었다.
먼저 튜터님 자료를 정리해보자.
https://github.com/etuhcarap/conventions-tutorial/wiki/Conventions
Conventions
Contribute to etuhcarap/conventions-tutorial development by creating an account on GitHub.
github.com
Commit Message Conventions
Package Structure
Java Code Style
Git flow
이외로 추가로 생각해본 컨벤션은
Class Naming Convention
Code Convention
<<문제발생>>
우리는 Package Structure에서 팀원 두분이 제시한 방법 중 어떤 방법이 적절할지 고민에 빠졌다.
DDD
<<정의>>
DDD방식이란 무엇일까??
반복적인 설계 수정을 기반으로 비즈니스와의 협업을 중심으로 하는 DDD
-데이터 중심이 아닌 도메인의 모델과 로직에 집중
-동일한 표현과 단어로 구성된 단일화된 언어체계의 사용
-Software Entity와 Domain 간 개념을 일치하여, 도메인 모델부터 코드까지 항상 함께 움직이는 구조의 모델 지향
https://kakaoentertainment-tech.tistory.com/95
이 글에서는 MSA의 하위개념으로 DDD를 말하고 있고
다른 시각으로 바라보는 사람도 있었다.
https://blog.naver.com/sssang97/223056423164
[DDD] 도메인 주도 설계(Domain Driven Design)
도메인 주도설계는 객체지향을 기반으로 하는 설계 방법론이다. 유지보수와 확장에 중점을 두며, 어느 정도...
blog.naver.com
좀 더 이해가 잘되는 글 인것 같다.
바라보는 관점과 설계 방식에 따라 여러 답변이 나오는 것 같다.
<<해결>>
우리는
- 프로젝트의 서비스 규모가 작고
- 모놀리식으로 개발하되 도메인을 중심으로 설계하고자 해서
DDD 방식으로 설계를 하기로 결정했다.
>>> 추가 이슈 발생
개인적으로 이해를 잘 못하고 있음을 깨달음.
✅ 아키텍처의 범주화 (큰 개념 → 세부 개념)
아키텍처 개념은 보통 **"배포 및 운영 방식"**과 "설계 방식" 두 가지로 나눌 수 있습니다.
1. 배포 및 운영 방식 (Deployment & Operation)
이 카테고리는 애플리케이션을 어떻게 배포하고 운영하는지에 대한 개념입니다.
🏛 (큰 개념) 애플리케이션 아키텍처
🔽
- 모놀리틱 아키텍처 (Monolithic Architecture)
→ 하나의 애플리케이션으로 모든 기능이 포함된 구조
→ 예: Spring Boot 단일 애플리케이션, Django 앱 - 마이크로서비스 아키텍처 (Microservices Architecture)
→ 기능별로 독립된 서비스로 나누어 배포하는 구조
→ 예: 사용자 서비스, 결제 서비스, 주문 서비스가 각각 분리 - 서버리스 아키텍처 (Serverless Architecture)
→ 서버를 직접 운영하지 않고 클라우드 기반 서비스(FaaS)를 활용하는 구조
→ 예: AWS Lambda, Google Cloud Functions
2. 설계 방식 (Design Patterns & Structure)
이 카테고리는 애플리케이션 내부 구조와 설계 패턴에 대한 개념입니다.
📦 (큰 개념) 소프트웨어 설계 아키텍처
🔽
- 계층형 아키텍처 (Layered Architecture)
→ Presentation, Service, Repository 등으로 나눠진 구조
→ 보통 모놀리틱 아키텍처에서 많이 사용됨 - 헥사고날 아키텍처 (Hexagonal Architecture, Ports & Adapters)
→ 비즈니스 로직을 인터페이스(포트)를 통해 외부 시스템과 연결하는 방식
→ 마이크로서비스에서도 자주 사용됨 - 이벤트 기반 아키텍처 (Event-Driven Architecture)
→ 이벤트를 기반으로 애플리케이션을 설계하는 방식
→ 마이크로서비스에서 주로 사용됨 - CQRS (Command Query Responsibility Segregation)
→ 읽기와 쓰기 로직을 분리하는 방식
✅ 정리: "포함 관계"가 아니라 "범주화된 관계"
상위 개념 (아키텍처 유형)설명하위 개념 (설계 패턴 & 구조)
모놀리틱 아키텍처 | 하나의 큰 애플리케이션으로 배포 | 계층형 아키텍처, MVC 패턴 |
마이크로서비스 아키텍처 | 여러 개의 독립 서비스로 배포 | 이벤트 기반 아키텍처, 헥사고날 아키텍처, CQRS |
서버리스 아키텍처 | 서버를 직접 운영하지 않고 클라우드 활용 | 이벤트 기반 아키텍처 |
✅ 결론
- 모놀리틱 vs 마이크로서비스 vs 서버리스는 배포 방식 차이
- 계층형 아키텍처, 이벤트 기반 아키텍처 등은 내부 설계 방식
- 특정 아키텍처 안에서 여러 설계 패턴을 사용할 수 있음
(예: 모놀리틱에서 계층형 아키텍처 사용, 마이크로서비스에서 이벤트 기반 아키텍처 사용)
👉 즉, 아키텍처 간에 "상위-하위 개념"이라기보다는 "배포 방식(큰 개념)"과 "설계 방식(세부 개념)"이 존재하는 것! 😊
그리고 설계 방식(Design Architecture) 안에서 패턴(Design Patterns)을 적용하는 구조
'TIL' 카테고리의 다른 글
Delivery프로젝트_6. 단위테스트와 통합테스트 (1) | 2025.02.19 |
---|---|
Delivery프로젝트_5.(Trouble Shooting)AOP/프록시객체/Lazy Loading (0) | 2025.02.18 |
Delivery프로젝트_4. HttpClient (feat. API_test) (0) | 2025.02.17 |
Delivery프로젝트_3. 어노테이션을 만든다고? (1) | 2025.02.14 |
Delivery프로젝트_1. Starting Assignments작성 (0) | 2025.02.12 |