1. 도메인이란?
우리가 프로그래밍을 한다면 가장 신경 써줘야할 곳, 우리가 문제에 대해 맞닥들이는 곳, 문제에 대해 풀어나가며 해결해 나아가야 하는 곳이다.
쉽게 말해 쇼핑몰 시스템의 목적은 물건을 쉽고 빠르게 구매하려는 사용자의 문제를 해결하는 것이다.
이처럼 문제를 해결하기 위해 사용자가 프로그램을 사용하는 분야를 도메인이라고 부른다(feat. 오브젝트)
1) 도메인은 아래와 같이 나눈다(feat. 반 버논)
- 메인 도메인 : 비즈니스의 전체 도메인
- 서브 도메인 : 메인 도메인에서 나누어지는 도메인
ㄴ 핵심 도메인 : 서브 도메인 중 가장 중요한 비즈니스가 될 도메인
ㄴ지원 서브 도메인 : 서브 도메인 중에 필수적이지만 핵심 도메인이 아닌 도메인. 즉, 비즈니스 적으로 연관이 되어야 하는 도메인
ㄴ범용 서브 도메인 : 필수적 X, 전체 비즈니스에 필요한 도메인
2. SW 아키텍처란?
- 복잡한 시스템을 지적으로 파악할 수 있는 추상화
1) 아키텍처의 종류(스타일)

- 모놀리식 아키텍처 : 단일 시스템으로 전체 코드를 단일 단위로 배포하는 것. 소규모 프로젝트에 용이하며 유지보수가 쉽다.
ex) Layered Architecture, Clean Architecture, Hexagonal Architecture

- 분산형 아키텍처 : 원격 액세스 프로토콜을 통해 여러 단위로 배포하는 것. 대규모 프로젝트에 용이하며 유지보수가 쉽지 않다.
ex) Service Oriented Architecture, Event-based Architecture, MicroService Architecture
일단 기본적으로 Layered Architecture 살펴본 뒤 요즘 각광을 받고 있는 MSA(MicroService Architecture)를 살펴보면 좋을 거 같다.
(ps. MVC는 아키텍처보다는 디자인 패턴이다.)
2) 아키텍처 선택
구조가 잡히지 않은 애플리케이션은 하나의 요구사항을 적용하는데 오랜 시간이 걸리고 변경을 못할 수도 있으며, 오류 대응이 느리고 확장성이 좋지 않다. 그렇다면 구조가 잘 잡힌 애플리케이션은 어떨까? 당연히 요구사항을 빠르게 적용할 수 있고 오류 대응이 빠르며 확장성이 좋다. 그리고 좋은 아키텍처 구조를 가지고 있다.
여기서 좋은 아키텍처란 경계가 뚜렷한 아키텍처를 말한다.
아키텍처의 선택 방법에는 3가지가 있다.
- 아키텍처 무관 선택 : 특별한 아키텍처를 선택하지 않지만 업계 표준이 되는 추정 아키텍처를 적용
- 아키텍처 집중 선택 : 시스템에 적절한 아키텍처를 판단하고, 시스템의 목표를 달성할 수 있는 아키텍처를 '의도적'으로 선택한다.
- 아키텍처 상향 선택 : 개발자가 시스템의 목표나 속성을 보장할 목적으로 아키텍처를 설계하는 일종의 아키텍처 집중 설계다. 목표나 속성을 아키텍처에 포함하면 개발자는 이를 달성하는 추가 코드를 작성할 필요가 없다.
좋은 아키텍처를 만들기 위해서는 구조를 잘 잡고 도메인에 많은 시간을 할애하여야 한다.
더 나아가 당연하게 팀원과의 공통의 룰을 만들어야 하며, 문서화를 잘해야한다.
본인도 실무를 직접 경험하면서 느낀 것은 팀원과의 의사소통이나 문서화를 하는 것은 정말 중요한 거 같다고 느끼고 있다.
특히 담당자가 부재일 경우 문서는 정말.. 중요하다..
'TIL > CS' 카테고리의 다른 글
[TIL/CS] OSI 7 계층 (0) | 2022.12.07 |
---|---|
[TIL/CS] 웹 서버(Web Server)와 웹 어플리케이션 서버(WAS) (0) | 2022.11.02 |
[TIL/CS] 로드밸런싱(Load Balancing)과 로드밸런서(Load Balancer)이란? (0) | 2022.10.07 |
[TIL/CS] 외부망, DMZ, 내부망이란? (0) | 2022.10.07 |