본문 바로가기

CS 지식/아키텍처4

멀티모듈(Multi Module)구조에 대하여 멀티 모듈(Multi Module)이란? 애플리케이션이 각각 특정 목적이나 기능을 제공하는 여러 모듈로 나누어지는 프로젝트 구조를 의미합니다. 모듈(Module)이란? 소프트웨어 개발의 모듈은 특정 기능을 수행하는 독립적인 코드 단위이며 종종 더 큰 시스템의 일부를 말합니다. 멀티 모듈은 왜 사용할까? 위 사진은 처음 소규모 앱을 만들 때 주로 사용하는 프로젝트 구조입니다. 위 구조는 처음 서비스 운영 시에는 문제가 없으나 서비스가 발전하여 기능이 점점 추가될 경우 다음과 같은 문제가 발생합니다. 확장성 문제: 계층의 가장 아랫부분인 인프라 계층부터 구현하려는 경향을 가지게 되는데, 이는 도메인과 db 엔티티의 경계를 모호게 하여 결국 도메인 모듈과 인프라 모듈이 혼재하기 되는 한계를 갖습니다. 리소스 .. 2023. 12. 15.
도메인 주도 설계(Domain Driven Design)란? 정의 비즈니스 도메인(Business Domain)을 중심으로 소프트웨어를 설계하고 개발하는 개발 방법론 비즈니스 도메인이란? 회사가 고객에게 제공하는 서비스를 의미합니다. (예: 아마존 - 클라우드 서비스) 왜 도메인 주도 설계가 나왔을까? 과거부터 현재까지 효과적인 소프트웨어 엔지니어링을 위해 다양한 설계 방법들이 등장했습니다. 하지만 다양한 개발 방법들이 등장함에도 불구하고 프로젝트는 여전히 종종 실패를 합니다. 프로젝트가 실패하는 이유를 찾아보면 여러 가지 이유가 있겠지만 주로 공통적으로 말하는 실패 요인은 커뮤니케이션입니다. 이러한 커뮤니케이션 문제를 해결하기 위해 등장하지 않았나 생각합니다. 어떻게 설계를 할까? 도메인 주도 설계 방식은 크게 전략적 설계와 전술적 설계로 나뉩니다. 1. 전략적.. 2022. 9. 22.
이벤트 기반 아키텍처(Event Driven Architecture)란? 이벤트 기반 아키텍처란? 이벤트에 대한 상태 변화에 반응하는 소프트웨어 아키텍처를 의미합니다. 이벤트란? 상태의 변경. 즉, 데이터의 변경, 생성, 삭제를 통해 발생하는 서비스의 의미 있는 변화를 뜻합니다. 이벤트 기반 아키텍처는 어떻게 작동할까? 이벤트의 감지에서 시작하여 이벤트 구조의 형태로 기술적 표현의 생성으로 진행하고 비로 끝나는 네 가지 논리적 계층으로 나눠져서 데이터를 처리합니다. 이벤트 프로듀서 (Publisher, Producer, Creater) 이벤트를 감지하고 감지한 이벤트를 메시지로 나타내는 역할을 합니다. 예시) 이벤트 프로듀서는 고객이 전자상거래 사이트에서 주문을 하면 "Check Out" 이벤트가 발생하여 이벤트 채널에 전달됩니다. 이벤트 채널 (Bus, broker, Rou.. 2022. 3. 20.
GraphQL 이란? 정의 API를 제공하기 위한 쿼리 언어 쿼리 언어란 뭘까? 사용자에게 필요한 정보를 데이터베이스나 정보 시스템에 보여달라고 요청할 수 있게 하는 컴퓨터 언어입니다. 쿼리 언어 종류는 여러 가지가 있지만 대표적으로 알려진 언어로는 SQL(Structured Query Language)이 있습니다. SQL과 GraphQL은 어떤 차이점이 있을까? 언어적 구조, 사용법 등 여러 가지 차이가 존재하나 가장 큰 차이점은 언어의 목적이 다르다는 점입니다. SQL은 데이터베이스에 저장된 데이터를 효율적으로 가져오는 것이 목적이며, GraphQL은 웹 클라이언트가 데이터를 서버로부터 효율적으로 가져오는 것이 목적입니다. 왜 이 기술이 생겨났을까? 기존에는 API 개발을 할 경우 주로 REST API를 사용했었습니다. .. 2021. 11. 16.