관리 메뉴

제뉴어리의 모든것

[Section2] [관계형 데이터베이스] [Spring Core] Spring Framework 기본 2 본문

코드스테이츠/정리 블로깅

[Section2] [관계형 데이터베이스] [Spring Core] Spring Framework 기본 2

제뉴어리맨 2022. 8. 10. 15:40

아키텍처란?

건축용어에서 나온 말로. 실제 지을 건축물에 대한 청사진같은것이다.

건축물에 대한 전체적인 구조를 표현한 것이다.

그렇다면 컴퓨터 시스템에서의 아키텍처란?

 

컴퓨터 시스템에서 아키텍처 유형

  • 시스템 아키텍처

소프트웨어와 하드웨어적인 요소들을 모두 포함하여 시스템의 전체적인 구조(컨셉)를 나타내는것이다.

 

- 채팅 프로그램의 아키텍처를 표현한 모습

 

1차 아키텍처

단순하게 최소한 필요한 구조이다.

그렇지만 수만 수십만의 사용자를 감당하기에는 무리가 있을것이다.

이것을 보완한 아키텍처가 아래이다.

 

2차 아키텍처

사용자가 급증할 경우를 대비하여

웹 소켓 서버를 여러개 두고, 요청이 들어온 클라이언트를 부하가 적은 웹소켓 서버와 매칭을 시켜주기 위하여

클라이언트 영역과 서버 영역 사이에 로드밸런서 영역을 추가하였다.

그리고 메시지 브로커 영역을 두어서 웹소켓 서버가 다중 서버로 구성이 되어 있더라도 특정 사용자들 간에 메시지를 주고 받을 수 있는 공유 채널을 사용하는 것이 가능해집니다.

 

 

3차 아키텍처

  • 변경사항

사용자의 요청과 서버의 응답이 이루어지는 전체 영역에 걸쳐서 Blocking 되는 요소가 없도록 리액티브 시스템을 구성하여 클라이언트의 요청을 보다 빠르게 처리할 수 있습니다.

웹소켓이 하나의 Connection과 연결되는 것에 반해 RSocket은 하나의 Connection 내에서 다중 요청 처리가 가능하기 때문에 대량의 요청을 안정적으로 처리할 수 있습니다.

 

 

+ 로드밸런서란?

로드 (부하) + 밸런서 (조절해주는것) 

쉽게 발해 분산처리이다.

 

 

소프트웨어 아키텍처

소프웨어 (앱) 의 아키텍처는 다양하게 존재한다.

그 중 웹애플리케이션과 연관이 많은 계층형 아키텍처(N-티어) 는 아래와 같다.

 

  • API 계층(API Layer)
    클라이언트와 애플리케이션의 주목적인 서비스 계층을 이어주는 계층으로 표현 계층(Presentation Layer) 이라고도 불리지만 웹앱에서는 REST API가 클라이언트에게서 호출되어 요청 사항이 서비스 계층으로 넘어가는 영역이기 때문에 API 계층이 더 적절한 표현방법이다. 

 

  • 서비스 계층(Service Layer)
    애플리케이션의 목적에 맞게 비즈니스 로직이 돌아가서 요청을 처리하는 영역이다.

 

  • 데이터 액세스 계층(Data Access Layer)
    서비스 계층에서 처리된 결과를 DB에 저장하거나, 요청에 해당하는 데이터를 DB로부터 가져오는 등 DB에 직접 접근하여 처리하는 영역이다.

 

 

 

+ 도메인(Domain)이란?

사전적 의미는 "정보와 활동의 영역" 

 

+ 추가적인 소프트웨어 아키텍처

https://mingrammer.com/translation-10-common-software-architectural-patterns-in-a-nutshell/