1. 문제 정의
회사가 하고자 하는 것
우리가 해야 하는 것
- 고객의 문제를 (빠르게, 다른 문제 없이) 해결 하고 싶다.
- 버그 또는 사이드 이펙트 → 이하 사이드 이펙트 로 통일
- 즉 우리는 회사가 하고자 하는 것을 아무 문제 없이, 빠른 시간에 이뤄내야한다.
2. 왜 그렇게 못할까?
2.1. 왜 빠르게 못할까?
- 코드를 이해하기 어렵다
- 너무 많은 코드 라인 & 흐름 파악 안됨 → 관심사 분리가 필요함
- 코드를 재사용하기 어렵다 → 의존성
2.2. 왜 사이드 이펙트가 발생할까?
- 예상한 것과 다른 동작의 발생 → 참조투명성 위배
- 예상하지 못한곳에서의 사용성 발생 → 응집도 부족
- 테스트 코드의 부족 → 작성 하기 어려운 환경(너무 많은 의존성)
3. 이 문제를 풀기 위해선 우리는 어떻게 해야할까?
- 이러한 문제들을 풀어내기 위해서 엔지니어들은
아키텍처 를 고민하게 됨.
3.1. 빠른 개발
- 관심사 분리를 통해서 이해 하기 쉬운 형태로 코드를 작성해야한다.
- 관심사 분리: 수준에 맞춰서 이해하는 영역을 구분한다