아키텍처

2024. 9. 10. 17:12개발/토막난 상식

반응형

아래는 다양한 소프트웨어 아키텍처 스타일을 예시와 함께 정리한 자료입니다:

1. Layered Architecture (계층형 아키텍처)
설명
소프트웨어 시스템을 주요 기능 또는 관심사별로 계층(layer)으로 나눕니다.

구조
Presentation Layer: 사용자 인터페이스
Business Logic Layer: 비즈니스 로직
Data Access Layer: 데이터베이스와의 상호작용
예시
웹 애플리케이션:
- Presentation Layer: HTML, CSS, JavaScript (React 등)
- Business Logic Layer: Node.js 서버 로직
- Data Access Layer: MongoDB, MySQL 쿼리

 

 

 

 


2. Feature-Based Architecture (기능 기반 아키텍처)
설명
소프트웨어 시스템을 기능 단위로 나누어 모듈로 구성합니다.

예시
전자상거래 애플리케이션:
- Product Module: 제품 목록, 상세 정보, 검색 기능
- Cart Module: 장바구니 추가, 삭제, 수정 기능
- Checkout Module: 결제 정보 입력, 주문 처리 기능

 

 

 

 


3. MVC Pattern (Model-View-Controller)
설명
데이터(Model), 사용자 인터페이스(View), 제어 흐름(Controller)을 분리하여 관리합니다.

구조
Model: 데이터 및 비즈니스 로직
View: 사용자 인터페이스
Controller: 사용자 입력 처리 및 Model과 View 연결
예시
블로그 애플리케이션:
- Model: 게시글 데이터베이스 (Post 모델)
- View: 게시글 목록 HTML, 게시글 작성 폼
- Controller: 게시글 목록을 가져와서 View로 전달, 사용자가 작성한 게시글을 저장

 

 

 

 

 


4. MVVM Pattern (Model-View-ViewModel)
설명
View와 Model 사이에 ViewModel을 두어 데이터 바인딩을 통해 상호작용을 관리합니다.

구조
Model: 데이터 및 비즈니스 로직
View: 사용자 인터페이스
ViewModel: Model과 View를 연결하며 데이터 바인딩
예시
Todo 애플리케이션:
- Model: Task 데이터 모델 (할 일 항목)
- View: 할 일 목록 UI, 새 할 일 추가 폼
- ViewModel: 할 일 목록, 필터링 및 정렬 로직, 각 항목의 상태 관리

 

 

 

 


5. Component-Based Architecture (컴포넌트 기반 아키텍처)
설명
애플리케이션을 독립적인 컴포넌트 단위로 나누고 재사용 가능하게 구성합니다.

예시
프런트엔드 애플리케이션:
- Header Component: 로고, 네비게이션 메뉴
- Footer Component: 저작권 정보, 소셜 미디어 링크
- ProductList Component: 제품 목록, 필터 옵션
- ProductItem Component: 개별 제품 정보, 장바구니 추가 버튼

 

 

 

 


6. Event-Driven Architecture (이벤트 기반 아키텍처)
설명
이벤트의 생성과 이를 처리하는 리스너로 시스템을 구성합니다.

예시
실시간 채팅 애플리케이션:
- 이벤트: 사용자 메시지 전송, 새로운 메시지 수신
- 이벤트 핸들러: 새로운 메시지를 데이터베이스에 저장, 사용자 인터페이스에 메시지 표시

 

 

 

 


7. Microservices Architecture (마이크로서비스 아키텍처)
설명
애플리케이션을 작은 독립적인 서비스로 나누어 설계합니다.

예시
전자상거래 애플리케이션:
- User Service: 사용자 인증 및 관리
- Product Service: 제품 정보 관리
- Cart Service: 사용자 장바구니 관리
- Order Service: 주문 처리

 

 

 

 

 


8. Serverless Architecture (서버리스 아키텍처)
설명
클라우드 서비스 제공자가 서버 관리와 인프라를 담당하고 함수 단위로 애플리케이션을 구성합니다.

예시
이미지 처리 애플리케이션:
- 이미지 업로드 이벤트: 사용자가 이미지를 업로드할 때 함수가 실행되어 이미지를 처리하고 저장
- AWS Lambda, Azure Functions 등을 사용하여 함수 정의

 

 

 

 

 

 

 


9. Feature-Sliced Design (FSD)
설명
소프트웨어 시스템을 특정 기능 단위로 나누어 모듈화합니다.

구조
Feature/Domain: 특정 기능에 관련된 모든 코드 포함
Public API: 외부에 노출되는 API
UI: 사용자 인터페이스 컴포넌트
Model: 데이터 구조 및 비즈니스 로직
Service: 외부 API 호출이나 비즈니스 로직 서비스
Store: 상태 관리 코드
예시
전자상거래 애플리케이션에서 사용자 로그인 기능:
src/
  auth/
    api/
      authAPI.js         // 사용자 인증 관련 API 호출
    ui/
      LoginForm.js       // 로그인 폼 컴포넌트
      LogoutButton.js    // 로그아웃 버튼 컴포넌트
    model/
      userModel.js       // 사용자 데이터 모델
    service/
      authService.js     // 인증 관련 비즈니스 로직
    store/
      authStore.js       // 인증 상태 관리
  product/
    ...                  // 제품 관련 기능
  cart/
    ...                  // 장바구니 관련 기능
  order/
    ...                  // 주문 관련 기능

 

 

 

https://velog.io/@userhwseo/Atomic-Design

 

프론트엔드의 아키텍처? 디자인 패턴?

미니 프로젝트 이후의 고민 미니 프로젝트를 마치고 반갑다 NYT API야 NYT에서 Search API를 가져와 develop 브랜치에 API를 바로 사용 가능 하게 끔 함수를 만들어 놓았다. 이후 useEffect를 사용하여 input

velog.io

 

https://velog.io/@shyunju7/FSD

 

기능 분할 설계 (Feature-Sliced Design, FSD) 아키텍처

9개월이라는 기간동안 여러 프로젝트에 참여할 수 있는 기회가 생겼었다! 기존에 경험해보지 못했던 기술도 새로 다뤄볼 수 있었고, 이전 프로젝트에서는 맛보기로 경험했던 기술도 제대로 다

velog.io