본문 바로가기

전체 글

(16)
[개발서적] 클린 아키텍처 11 - DIP: 의존성 역전 원칙 DIP : 의존성 역전 원칙 (Dependancy Inversion Principle)DIP에서 '유연성이 극대화된 시스템'을 말할 땐 소스 코드 의존성이 추상(abstraction)에 의존하며 구체(concretion)에는 의존하지 않는 것을 말한다. 즉, 상위 요소를 상속받을 때 구체화된 구현체를 직접 상속받는 것이 아니라 인터페이스 또는 추상 클래스와 같이 추상화된 클래스를 참조해야 한다 의미다. 그러나 모든 것에서 DIP를 강제하는 것은 현실적이지 않다. 우리가 현실적으로 지킬 수 있는 방법은 변동성이 큰 구체를 의존하지 않도록 피하는 것이다.안정화된 추상화추상 인터페이스이 변경되면 이를 구체화한 구현체들 또한 변경되어야 한다. 그러나 구체화된 구현체를 변경하는 경우에 인터페이스를 변경하는 경우는..
AWS ECS + Cloudfront 를 이용한 Nuxt 배포 중 흰 페이지 이슈 해결 웹 서비스 자동화 배포 중 빈 화면이 노출되는 문제를 해결하는 과정을 기록한 글입니다. 이슈 상황앱에 들어가는 웹 상세 페이지가 배포되는 경우 자바스크립트 파일을 찾지 못해 흰 공백 페이지로 접속되는 문제가 발생하였습니다. 이 문제의 원인은 배포 중 기존 버전 서버와 새로 배포된 서버가 ALB에 동시에 존재하는 상황에서 HTML에 추가된 소스 파일을 서로 다른 서버에 요청하면서 찾지 못하는 상황 때문에 발생하는 문제였습니다.문제가 발생하는 상황은 다음과 같습니다.상황 : 구 버전 v1이 이미 배포된 상황에서 신규 버전 v2이 배포되는 상황시점 : AWS ECS에 빌드된 버전 v2의 인스턴스가 활성화되고, 구버전 v1 인스턴스가 draining 되는 시점원인 : 클라이언트단에서 js 파일을 호출 시 ALB..
[개발서적] 클린 아키텍처 10 - ISP: 인터페이스 분리 원칙 ISP란?ISP(인터페이스 분리 원칙)는 클래스 간 의존 관계를 인터페이스 단위로 분리함으로써, 불필요한 의존성을 제거하고 변경 시 불필요한 빌드와 배포를 방지하도록 한다.의존 관계로 인한 문제하나의 클래스를 여러 하위 클래스가 의존하는 경우, 하위 클래스가 사용하지 않는 메서드에도 의존성이 생기기 때문에 상위 클래스가 수정되면 모든 하위 클래스에서 재컴파일 및 재배포가 필요해지는 문제가 발생할 수 있다. 이 문제는 상위 역할 클래스와 이를 구현한 하위 구현 클래스 간의 의존관계를 인터페이스 단위로 분리함으로써 불필요한 메서드에 대한 의존성을 제거하여 해결할 수 있다.ISP와 아키텍처ISP는 정적 타입 언어에만 국한된 원칙으로 보일 수 있지만, 아키텍처 영역에서도 적용될 수 있다. 예를 들어, S 시스템..