매일 매일, 차곡 차곡 쌓기



완벽하지 않은 것을 두려워 말며,
완성도를 높히는데 집중하자.

소프트웨어 아키텍처 4

클린아키텍처

클린아키텍처란?추상화 개념으로써 관심사를 분리시키고 의존도를 낮추는 것에 목적을 둔 아키텍처를 말합니다. 클린아키텍처 레이어 구조 안쪽에 위치할 수록 고수준 정책이며, 바깥쪽에 위치할 수록 저수준 정책을 의미합니다. 1. 엔티티(Entities)의도에 따라 도메인 계층으로도 불리며, 엔티티 계층은 하나 이상의 프로그램 간에 공유될 수 있다는 가정하에 만드는 수명이 긴 객체입니다. 즉 재사용 가능성이 높다는것을 인지하고 외부에 의해 변경될 가능성을 낮춰야 합니다. 이곳에 Enterprise 규모의 비즈니스 데이터를 포함함거나 핵심이 되는 비즈니스 규칙을 캡슐화 합니다. 2. 유즈케이스애플리케이션 계층이라고도 불리며, 어플리케이션 규모의 비즈니스 규칙을 포함합니다. 이 레이어의 변경사항은 엔티티에 영향을 미..

레이어드 아키텍처

레이어드 아키텍처란? 레이어드 아키텍처는 소프트웨어 시스템을 관심사 별로 여러 개의 계층으로 분리한 아키텍처를 말합니다. 각 계층은 어플리케이션 내에서 특정 역할과 책임을 가지며, 자신의 역할에만 집중합니다. 레이어드 아키텍처에서는 추상화된 인터페이스를 통해 소통하며, 소통은 자신에게 인접한 하위 계층에 요청을 보내는 방식으로 이루어집니다. 상위 계층은 하위 계층으로 단방향 의존성을 가집니다. 일반적인 레이어드 아키텍처는 다음과 같은 4단계로 구성됩니다: 프레젠테이션 계층: 사용자 혹은 클라이언트 시스템과 직접 연결됩니다. 서비스 계층: 비즈니스 로직을 구현하는 부분입니다. 영속성 계층: 데이터의 영구 저장과 관리를 담당합니다. 데이터베이스 계층: 실제 데이터베이스를 의미합니다. 레이어드 아키텍처를 사용..

마이크로서비스 아키텍처

마이크로서비스 아키텍처란? 마이크로서비스 아키텍처(MicroService Architecture, MSA)는 단일 애플리케이션으로 이루어진 모놀리식 아키텍처와 달리 아주 작은 서비스 단위로 나눠 각 서비스에 독립적으로 서비스를 구성하는 소프트웨어 아키텍처 입니다. 마이크로서비스 아키텍처의 장점 유연한 확장성 : 각 마이크로서비스는 다른 서비스와 독립적으로 확장할 수 있기 때문에 유연합니다. 더 민첩한 배포 주기 : 코드 변경점이 생긴 서비스 영역만 배포할 수 있기 때문에 빠르게 배포할 수 있습니다. 유지 관리 안전성 : 여러 마이크로서비스로 분할하여, 특정 마이크로서비스가 중단되더라도 전체 어플리케이션에 영향을 미치기 않기 때문에 안정적이다 기술 유연성 높음 : 각 마이크로 서비스는 필요에 따라 독립..

모놀리식 아키텍처

모놀리식 아키텍처란? 모놀리식 아키텍처(Monolithic Architecture, MA)는 단일 코드 베이스로 여러 비즈니스 기능을 수행하는 전통적인 소프트웨어 개발 아키텍쳐입니다. 모놀리식 아키텍처의 장점 단순하고 통일성 있는 구조 : 단일코드 베이스로 단순한 구조를 가졌기에, 개발이 쉽습니다. 간편한 개발 : 새로운 기능이 추가되거나 버그를 수정 했을때, 단일 프로젝트로 간편한 배포가 가능합니다. 빠르고 편한 E2E 테스트 : 단일 어플리케이션으로 E2E 테스트가 쉽습니다. 손쉬운 모니터링, 디버깅 : 별도 추가 구성 없이 단일 어플리케이션에서 로직을 수행하기 때문에 모니터링 및 디버깅 쉽습니다. 모놀리식 아키텍처의 단점 유지 보수 및 안전성 문제 : 프로젝트가 거대해짐에 따라 코드가 복잡해지고, ..