Home 1장 인프라 아키텍처를 살펴보자
Post
Cancel

1장 인프라 아키텍처를 살펴보자

1.1 인프라란 무엇일까?

인프라는 기반이라는 뜻으로 인프라 구조 자체는 복잡하지만 전문가에 의해 관리되고 있어서 사용자는 그 구조를 이해하지 않고도 간단히 이용할 수 있다는 특징이 있다. 인프라 아키텍처는 IT 인프라의 구조를 의미한다. 인터넷 검색 시스템이나 항공 회사 티켓 발권 시스템, 편의점 계산대 등 모두가 이용 방법이나 사용자가 다르지만 IT 인프라 위에서 동작하고 있다.

1.2 집약형과 분할형 아키텍처

1.2.1 집약형 아키텍처

IT 시스템 여명기에는 대형 컴퓨터를 이용해서 모든 업무를 처리하는 형태가 대부분이었다. 시스템 아키텍처라는 관점에서 하나의 컴퓨터로 모든 처리를 하기 때문에 집약형이라고 할 수 있다. 집약형의 최대 장점은 구성이 간단하다는 것이다. 컴퓨터를 구성하는 주요 부품은 모두 다중화돼 있어서 하나가 고장나더라도 업무를 계속할 수 있다. 또 복수의 서로 다른 업무 처리를 동시에 실행할 수 있도록 유한 리소스 관리를 한다.

[장점]

  • 한 대의 대형 컴퓨터만 있으면 되므로 구성이 간단하다.
  • 대형 컴퓨터의 리소스 관리나 이중화에 의해 안정성이 높고 고성능이다.

[단점]

  • 대형 컴퓨터의 도입 비용과 유지 비용이 비싸다.
  • 확장성에 한계가 있다.

1.2.2 분할형 아키텍처

여러 대의 컴퓨터를 조합해서 하나의 시스템을 구축하는 구조다. 대형 컴퓨터는 안정성이 높고 고성능이지만 현재는 소형 컴퓨터라도 충분한 성능을 낼 수 있다. 또 구입비용이 압도적으로 저렴하다. 분할형의 장점은 개별 컴퓨터의 안전성이 낮아도 괜찮기 때문에 저가 장비를 이용해서 전체적인 비용을 줄일 수 있다는 것이다. 또 더 많은 컴퓨터를 이용해서 시스템 전체 성능을 향상시킬 수 있어서 확장성이 좋다는 특징도 가졌다.

하지만 서버 수가 늘어나면 이를 운영하기 위한 구조가 복잡해지는 경향이 있다.

[장점]

  • 낮은 비용으로 시스템을 구축할 수 있다.
  • 서버 대수를 늘릴 수 있어서 확장성이 높다.

[단점]

  • 대수가 늘어나면 관리 구조가 복잡해진다.
  • 한 대가 망가지면 영향 범위를 최소화하기 위한 구조를 검토해야 한다.

물리 서버와 논리 서버의 차이

분할형 아키텍처에서 이용되는 컴퓨터를 서버라고 한다. 서버라는 용어는 컴퓨터 자체를 가리키는 경우도 있고(물리서버), 컴퓨터에서 동작하고 있는 소프트웨어를 가리키는 경우도 있다.

예) 인터넷에 접속했을 때 사용자 입력 및 HTML 생성을 담당하는 것은 서버에서 동작하는 소프트웨어인 ‘웹 서버’, 대량의 데이터를 저장해서 요청에 따라 데이터를 제공하는 것은 데이터베이스 기능을 제공하는 ‘DB 서버’다.

1.3 수직 분할형 아키텍처

분할형에서는 서버 분할 방식, 즉 역할 분담을 고려해야 한다.

1.3.1 클라이언트-서버형 아키텍처

업무 애플리케이션, 미들웨어, 데이터베이스 등의 소프트웨어를 물리 서버 상에서 운영하고 있다. 특징으로 클라이언트 측에 전용 소프트웨어를 설치해야 한다는 것읻.

[장점]

  • 클라이언트 측에서 많은 처리를 실행할 수 있어서 소수의 서버로 다수의 클라이언트를 처리할 수 있다.

[단점]

  • 클라이언트 측의 소프트웨어 정기 업데이트가 필요하다.
  • 서버 확장성에 한계가 발생할 수 있다.

1.3.2 3계층형 아키텍처

프레젠테이션 계층(사용자의 입력을 받는다), 애플리케이션 계층(사용자 요청에 따라 업무 처리를 한다), 데이터 계층(요청에 따라 데이터 입출력을 한다)의 3층 구조로 분할돼 있어서 3계층형이라고 부른다. 클라이언트-서버형에 비해 특정 서버에 부하가 집중되는 문제가 해결된다는 것이 장점이다. 또 이 아키텍처에서는 모든 처리가 AP 서버나 DB 서버를 이용하지 않아도 된다. 예를 들어 이미지 파일만 읽으면 되는 경우라면 웹 서버만으로도 처리를 완료해서 결과를 반환할 수 있다.

[장점]

  • 서버 부하 집중 개선
  • 클라이언트 단말의 정기 업데이트가 불필요
  • ‘처리 반환’에 의한 서버 부하 저감

[단점]

  • 구조가 클라이언트-서버 구성보다 복잡하다

1.4 수평 분할형 아키텍처

수평 분할형 아키텍처의 용도는 같은 서버를 늘려나가는 방식이다. 서버 대수가 늘어나면 한 대가 시스템에 주는 영향력이 낮아져서 안정성이 향상되고, 처리를 담당하는 서버 대수가 늘어나면 전체적인 성능 향상도 실현할 수 있다.

1.4.1 단순 수평 분할형 아키텍처

수평 분할을 sharding, partitioning이라 부르기도 한다. 이 구조는 거래상으로 멀리 떨어진 시스템에 자주 이용되고, 공장처럼 각 거점이 완전히 독립된 운영을 하고 있는 경우에도 적합하다.

[장점]

  • 수평으로 서버를 늘리기 때문에 확장성이 향상된다.
  • 분할한 시스템이 독립적으로 운영되므로 서로 영향을 주지 않는다.

[단점]

  • 데이터를 일원화해서 볼 수 없다.
  • 애플리케이션 업데이트는 양쪽을 동시에 해 주어야 한다.
  • 처리량이 균등하게 분할돼 있지 않으면 서버별 처리량에 치우침이 생긴다.

1.4.2 공유형 아키텍처

공유형에서는 단순 분할형과 달리 일부 계층에서 상호 접속이 이루어진다.

[장점]

  • 수평으로 서버를 늘리기 때문에 확장성이 향상된다.
  • 분할한 시스템이 서로 다른 시스템의 데이터를 참조할 수 있다.

[단점]

  • 분할한 시스템 간 독립성이 낮아진다.
  • 공유한 계층의 확장성이 낮아진다.

**엣지 컴퓨팅 : 가상화를 사용해 데이터 센터를 통합하거나 클라우드로 이전하면서 네트워크 대역과 비용이 크게 증가했다. 그래서 지리적으로 가까운 위치에 있는 서버로 처리를 분산하고 처리 결과만 중앙으로 보내는 아키텍처가 각광받고 있다. 이것이 바로 ‘Edge Computing’ 이다.

1.5 지리 분할형 아키텍처

1.5.1 스탠바이형 아키텍처

물리 서버를 최소 두 대를 준비하여 한 대가 고장 나면 가동 중인 소프트웨어를 다른 한 대로 옮겨서 운영하는 방식이다. 이때 소프트웨어 재시작을 자동으로 하는 구조를 ‘Failover’(F/O)라고 한다. 이 방식은 물리 서버 고장에 대처할 수는 있지만 보통 때는 페일오버 대상 서비스가 놀고 있는 상태가 되기 때문에 리소스 측면에서 낭비가 발생한다.

1.5.2 재해 대책형 아키텍처

특정 데이터 센터에 있는 상용 환경에 고장이 발생하면 다른 사이트에 있는 재해 대책 환경에서 업무 처리를 재개하는 것을 가리킨다. 서버 장비를 최소 구성 및 동시 구성으로 별도 사이트에 배치하고, 소프트웨어도 상용 환경과 동일하게 설정한다. 문제점은 애플리케이션 최신화와 데이터 최신화이다. 특히 데이터는 매일 갱신되기 때문에 어느 정도 실시간성을 유지해서 사이트간 동기 처리를 해야한다.

This post is licensed under CC BY 4.0 by the author.

15장 훌륭한 프로그래머가 되기 위한 팁과 경험담

2장 서버를 열어 보자