<집약형과 분할형 아키텍처>
-
집약형 아키텍처 : 하나의 컴퓨터로 모든 주요 업무를 처리를 한다.
컴퓨터는 하나로 사용하지만, 컴퓨터를 구성하는 주요 부품은 다중화 되어있기 때문에, 하나가 고장나더라도 업무를 계속할 수 있다.
복수의 서로 다른 업무 처리를 동시에 실행할 수 있도록 유한 리소스 관리를 한다.
ex) 기간시스템
장점 : 한 대의 대형 컴퓨터만 있으면 되므로 구성이 간단하다.
대형 컴퓨터의 리소스 관리나 이중화에 의해 안정성이 높고 고성능
단점 : 대형 컴퓨터 도입 비용과 유지 비용이 비싸다
확장성의 한계
-
분할형 아키텍처 : 여러 대의 컴퓨터를 조합해서 하나의 시스템 구축
여러대의 컴퓨터가 연결돼 있어서 데이터 서로 교환
장점 : 낮은 비용으로 시스템 구축 가능 (최대 100배 차이)
서버 대수를 늘릴 수 있기 때문에 확장성이 높음단점 : 서버 수가 늘어나면 운영 구조가 복잡해진다.
한 대가 망가지면 영향 범위를 최소화하기 위한 구조를 검토해야함
<수직 분할형 아키텍처>
-
클라이언트-서버형 아키텍처
업무 애플리케이션, 미들웨어, 데이터베이스 등의 소프트웨어를 물리 서버에서 운영하고,
소프트웨어에 클라이언트 또는 단말이라 불리는 소형 컴퓨터가 접속해서 이용하는 형태 (C/S) -> 역할별로 수직분할C/S 서버는 클라이언트 측에 전용 소프트웨어를 설치해야한다.
-> 특정 업무는 PC에서하고, 데이터를 취득하는 등의 업무는 서버에서 한다.
장점 : 클라이언트 측에서 많은 처리를 실행할 수 있어서, 소수의 서버로 다수의 클라이언트 처리 가능
단점 : 클라리언트 측의 소프트웨어 정기 업데이트 필요 (window, linux ...)
서버 확장성의 한계 -
3계층형 아키텍처 : C/S형 발전
프레젠테이션 계층, 애플리케이션 계층, 데이터 계층으로 나뉜다.
프레젠테이션 계층 : 사용자의 입력 + 웹 브라우저 화면 표시
애플리케이션 계층 : 사용자 요청 (Request)에 따라 업무 처리
데이터 계층 : 애플리케이션 계층의 요청에 따라 데이터 입출력
장점 : 특정 서버에 부하가 집중되는 문제 개선
클라이언트 단말의 정기 업데이트 불필요 + 사용자는 웹 브라우저만 준비
모든 처리가 AP 서버나 DB 서버를 거치지않아도됨단점 : C/S 구성보다 복잡하다.
<수평 분할형 아키텍처>
수평 분할형 아키텍처는 용도가 같은 서버를 늘려나가는 방식이다.
-> 서버 한 대가 시스템에 주는 영향령 낮아지고, 안정성 향상
Sharding(샤딩) or Partitioning(파티셔닝) 이라고도 불림
-
단순 수평 분할형 아키텍처
서울 지사 시스템과 미국 지사 시스템을 분할해놓는 것. -> 각각 독립성 향상
사용자가 많은 경우에는 지역별이 아닌, 사용자 ID 기준으로 서버를 샤딩하기도 한다.장점 : 수평으로 서버를 늘리기 때문에 확장성 향상
분할한 시스템이 독립적으로 운영되므로, 서로 영향을 주지 않는다.단점 : 샤딩된 서버들의 데이터를 동시에 이용할 수 없다. (매번 각각 업데이트해줘야함)
각 서버별로 사용자가 균등하지 않다면, 처리량에 치우침이 발생한다. -
공유형 아키텍처
장점 : 수평으로 서버를 늘리기 때문에 확장성 향상
분할한 시스템이 서로 다른 시스템의 데이터 참조 가능단점 : 분할한 시스템 간 독립성 저하
공유한 계층의 확장성 저하
<지리 분할형 아키텍처>
-
스탠바이형 아키텍처 : 스탠바이구성 = HA(High Availability) 구성 = 액티브-스탠바이 구성
이 때, 소프트웨어 재시작을 자동으로 하는 구조를 페일오버(Failover, 페일, F/O) 라고한다.
장점 : 물리 서버 고장에 대처 가능
페일오버 서버를 두지않고, 동시에 교차 이용 가능하도록 한다면 좋다.단점 : 페일오버 대상 서버(스탠바이)는 평상시에 놀고 있는 상태 -> 리소스 낭비
-
재해 대책형 아키텍처
장점 : 재해 발생 대비 가능단점 : 갱신 되는 데이터들 간의 동기 처리를 해야하므로 비용, 대상 데이터 등을 고려해야함.
참조 : 그림으로 공부하는 IT 인프라 구조
'Developer > Develop' 카테고리의 다른 글
[Jenkin/젠킨스] Spread load evenly by using ... rather than (0) | 2023.10.19 |
---|---|
intelliJ - git 연동하기 (0) | 2021.01.12 |
selenium 으로 크롤링 하기 - selenium의 기초 크롤러 만들기 (0) | 2019.12.25 |