객체 지향 설계의 5가지 원칙, S.O.L.I.D
S, Single responsibility Principle
- 단일 원칙 책임(SRP), 모든 class 또는 method는 단 하나의 책임만을 가져야한다는 의미
- MSA에서는 여기서 한발 더 나아가 서비스에 1개의 책임을 가지게 하기도 한다
O, Open-closed principle
- 개방-폐쇠의 원칙(OCP), 소프트웨어의 entity(class, module, method)들의 확장은 권장하지만, 기존 모듈의 수정은 지양한다는 의미
L, Liskov substitution principle
- Liskov 치환 원칙(LSP), (A => B)라는 상속 관계가 있을 때, B는 sub class이고 A는 base class이다, 이때 B의 행동은 A의 행동의 예상 범위 내에서 이루어져야 한다는 의미
I, Interface segregation principle
- 인터페이스 분리의 원칙, client가 실제로 사용하는 인터페이스를 만든다는 의미로, 인터페이스를 사용에 맞게끔 분리해야 한다는 설계원칙
D, Dependency inversion principle
- 의존성 역전의 원칙, 어떤 class를 참조해야 한다면, 직접 참조하는 것이 아니라 그 대상을 추상 class로 만들어서 사용해야 한다는 의미(해당 추상 클래스는 참조하는 클래스(상위 모듈)의 목적을 기본으로 한다)