반응형
1. 인프라 아키텍처를 살펴보자
인프라(infra) 기반
IT 인프라 - IT 기반이 되는 것
인프라 아키텍처 - IT 인프라의 구조를 의미
1.2 집약형과 분할형 아키텍처
1.2.1 집약형 아키텍처
시스템 아키텍처라는 관점에서는 하나의 컴퓨터로 모든 처리를 하기 때문에 '집약형'이라고 할 수 있다. 최대 장점은 구성이 간단하다는것이다.
집약형 아키텍처는 해당 기업의 주요 업무를 모두 한대로 처리하기 때문에 장비 고장 등으로 업무가 멈추지 않도록 고민을 해야한다. 컴퓨터를 구성하는 주요 부품은 모두 다중화돼 있어서 하나가 고장 나더라도 업무를 계속할 수 있다. 또, 복수의 서로 다른 업무 처리를 동시에 실행할 수 있도록 유한 리소스 관리를 하고 있다. 이를 통해 하나의 처리가 실수로 대량의 요청을 보내더라도 다른 처리에 영향을 주지 않도록 되어 있다. 한 대의 컴퓨터라고 하지만, 그 안에 마치 여러 사람이 동거하고 있는 모습이라 할 수 있다.
많은 기업에서 아직까지 사용되고 있으며, 주로 '기간 시스템'이라 불리는 기업 내 핵심 업무 시스템에서 이용하고 있는 경우가 많다. 예를 들어, 은행이라면 '계정 시스템'이 여기에 해당된다.
단, 대형 컴퓨터는 도입 비용 및 유지 비용이 큰 경향이 있다. 또, 대형 컴퓨터의 파워가 부족하면 다른 한 대를 별도로 구매해야 해서 비용이 매우 많이 들며, 확장성에도 한계가 있다는 단점이 있다. 현재는 가격이 싸고 확장성이 높은 분할형이 주로 사용되고 있다.
장점
- 한 대의 대형 컴퓨터만 있으면 되므로 구성이 간단하다.
- 대형 컴퓨터의 리소스 관리나 이중화에 의해 안정성이 높고 고성능이다.
단점
- 대형 컴퓨터의 도입 비용과 유지 비용이 크다.
- 확장성에 한계가 있다.
1.2.2 분할형 아키텍처
여러 대의 컴퓨터를 조합해서 하나의 시스템을 구축하는 구조이다.
대형 컴퓨터는 안정성이 높고 고성능이지만, 현재는 소형 컴퓨터라도 충분한 성능을 낼 수 있다. 또, 대형 컴퓨터와 비교해서 소형 컴퓨터 구입 비용이 압도적으로 저렴한다.(100배차이도 날수 있음) 단, 안정성은 한대의 컴퓨터만 으로는 대형 컴퓨터에 미치지 못한다. 이 결점을 보완하기 위해 분할형 아키텍처에서는 여러대의 컴퓨터를 이용해 한 대가 고장 나도 안정성을 담보하고 있다. 표준 OS나 개발 언어를 이용하기 때문에 '오픈 시스템'이라고 부른다. 또, 여러 대의 컴퓨터를 연결해서 이용하기 때문에 '분산 시스템'이라 부르기도 한다.
저가 장비를 이용해서 전체적인 비용을 줄일수 있다. 확장성이 좋다. 구조가 복잡해지고 서버가 망가지면 영향 범위를 최소화 하기 위해 서버별 역할을 세세하게 검토해야 한다. 서버를 분할하는 일반적인 방식으로는 수직형과 수평형의 두 가지가 있다.
장점
- 낮은 비용으로 시스템을 구축할 수 있다
- 서버 대수를 늘릴 수 있어서 확장성이 높다.
단점
- 대수가 늘어나면서 관리 구조가 복잡해진다.
- 한 대가 망가지면 영향 범위를 최소화하기 위한 구조를 검토해야 한다.
물리 서버와 논리 서버의 차이
분할형 아키텍처에서 이용되는 컴퓨터를 '서버'라고 한다. 서버라는 용어는 컴퓨터 자체(하드웨어)를 가리키는 경우도 있고, 컴퓨터에서 동작하고 있는 소프트웨어를 가리키는 경우도 있다.
서버라는 용어는 원래 '특정 역할에 특화된 것'을 의미.
예) 인터넷에 접속했을 때 사용자 입력 및 HTML 생성을 담당하는 것은 서버에서 동작하는 소프트웨어인 '웹 서버'다. 대량의 데이터를 저장해서 요청에 따라 데이터를 제공하는 것은 데이터베이스 기능을 제공하는 'DB 서버'다. 컴퓨터 자체를 가리키는 경우는 '물리서버'라고 부른다.
웹 서버나 DB 서버가 하나의 물리 서버에서 동작하는 경우도 있으며, 각각 별도의 물리 서버에서 동작하는 경우도 있다.
1.3 수직 분할형 아키텍처
분할형에서는 서버 분할 방식, 즉 역할 분담을 고려해야 한다. 각각의 서버가 전혀 다른 작업을 하는 것인지,아니면 비슷한 작업을 하는 것인지에 대한 관점이다.
특정 서버 측면에서 봤을때 역할에 따라 '위' 또는 '아래' 계층으로 나뉘기 때문에 수직형이라고 한다.
1.3.1 클라이언트-서버형 아키텍처
수직 분할형의 예. 업무 애플리케이션, 미들웨어, 데이터베이스 등의 소프트웨를 '물리서버' 상에서 운영하고 있다. 이들 소프트웨어에 '클라이언트' 또는 '단말'이라 불리는 소형 컴퓨터가 접속해서 이용하는 형태다. Client/Server의 앞글자를 따서 'C/S'라고 부르기도 한다.
특징은 클라이언트 측에 전용 소프트웨어를 설치해야 한다. 업무 애플리케이션 갱시 시마다 클라이언트 측 소프트웨어도 업데이트 해야 한다. 이용자 측면에서 업데이트를 귀찮아서 하지 않으면 기능을 마음껏 사용하지 못하는 불편함이 발생하고 시스템 위험 요소가 될 수 있다. 또한, 서버에 처리가 집중되면 확장성에 한계가 발생할 가능성이 있다. 이런 단점을 개선하려고 한것이 3계층형이다.
장점
- 클라이언트 측에서 많은 처리를 실행할 수 있어서 소수의 서버로 다수의 클라이언트를 처리할 수 있다.
단점
- 클라이언트 측의 소프트웨어 정기 업데이트가 필요하다.
- 서버 확장성에 한계가 발생할 수 있다.
1.3.2 3계층형 아키텍처
수직 분할형의 한가지 예인데, 클라이언트-서버형을 발전시킨 것이다. 프레젠테이션 계층, 애플리케이션 계층, 데이터 계층 의 3층 구조로 분할돼 있어서 3계층형이라고 부른다.
프레젠테이션 계층
- 사용자 입력을 받는다.
- 웹 브라우저 화면을 표시한다.
애플리케이션 계층
- 사용자 요청(request)에 따라 업무 처리를 한다.
데이터 계층
- 애플리케이션 계층의 요청에 따라 데이터 입출력을 한다.
사용자가 웹 브라우저를 통해 시스템에 접속한다. 사용자가 웹 브라우저에 입력하는 화면은 프레젠테이션계층의 웹 서버에 먼저 전달된다. 웹 서버는 그 요청을 뒤에 있는 애플리케이션 계층의 애플리케이션 서버(AP서버)에 전달한다. AP서버는 요청을 바탕으로 판단해서 뒤에 있는 데이터 계층의 데이터베이스(DB 서버)에 데이터를 요청한다.
클라이언트- 서버형에 비해 특정 서버에 부하가 집중되는 문제가 해결된다는 장점이 있다. 또한, 업무 애플리케이션 갱신에 따른 클라이언트 업데이트가 필요 없으며, 사용자는 웹 브라우저만 준비하면 된다.
게다가, 이 아키텍처에서는 모든 처리가 AP서버나 DB서버를 이용하지 않아도 된다. 예를 들어, 이미지 파일만 읽으면 되는 경우라면 웹 서버만으로도 처리를 완료해서 결과를 반환할 수 있으므로 다른 서버에 부하를 주지 않는다. 단, 시스템 전체 구조가 클라이언트-서버형 보다 복잡하다.
장점
- 서버 부하 집중 개선
- 클라이언트 단말의 정기 업데이트가 불필요
- '처리 반환'에 의해 서버 부하 저감
단점
- 구조가 클라이언트-서버 구성보다 복잡하다.
대부분이 이 3계층 구조를 채용하고 있다.
웹은 클라이언트-서버형을 대체할 수 있을까?
웹 시스템에서 많이 이용되는 것은 3계층형이다. 이 아키텍처는 클라이언트-서버형의 약점을 보완하기 위해 탄생했다. 사람들은 이것이 궁극의 아키텍처 탄생의 신호라고 생각했었다.
웹 브라우저는 기능 경쟁이 심해서 최근의 경향은 브라우저 다기능화이다. 동영상, 엑셀, 게임 등의 애플리케이션을 브라우저에서 이용할 수 있다.
한 예로, 브라우저와 통신을 위한 '웹 소켓'이라는 기술이 있다. 기존 웹에서는 브라우저가 웹 서버에 요청을 보내서 그것을 받아 처리하는 구조였지만, 이 방식에서는 요청이 없어도 웹 서버가 브라우저에 데이터를 전달(푸시)할 수 있다. 이를 통해 브라우저가 더 많은 것을 실행할 수 있는 형태로 진화되고 있다.
브라우저는 단순히 '인터넷 콘텐츠 표시용 소프트웨어'가 아닌, 다기능(리치) 단말이 되고 있다. 이것은 3계층 아키텍처 상에서 클라이언트-서버형 시스템을 동작시키고 있는 것과 같다. 이처럼 제약이 생긴 발상은 그 제약을 제거함으로써 기존의 방식으로 되돌아가는 경우가 많다. 자주 쓰이는 표현을 빌자면, 역사는 반복된다라고 할 수 있다.
예를 들어, 집약형에서 분할형으로 패러다임이 이동했지만, 최근 하드웨어 제조사는 역으로 하드웨어와 소프트웨어 일체형 제품을 판매하고 있다. 이것은 일단 분할한 것을 요소 기술 그대로 다시 재결합하는 형태다.
1.4 수평 분할형 아키텍처
용도가 같은 서버를 늘려나가는 방식. 서버 대수가 늘어나면 한 대가 시스템에 주는 영향력이 낮아져서 안정성이 향상된다. 전체적인 성능 향상도 실현 된다. 수직 분할형과 수평 분할형은 배타적인 관계가 아니다. 대부분의 시스템이 이 두가지 방식을 함께 채택하고 있다.
1.4.1 단순 수평 분할형 아키텍처
시스템별로 가로로 분할(수평분할) 시스템이 둘로 분할됨으로써 시스템 전체 처리 성능을 두 배로 향상시킬 수 있다. 또한, 두개의 독립된 시스템이 생성되기에 한 시스템에 장애가 발생하더라도 다른 시스템에는 전혀 영향을 주지 않아 독립성이 향상된다.
하지만 두 시스템이 같은 업무 애플리케이션을 이용하고 있다면, 애플리케이션 업데이트를 양쪽 시스템에 매번 실시해 주어야 한다. 데이터도 각각 따라 보유하고 있어서 양쪽 데이터를 동시에 (일원화해서) 이용할 수 없다. 또, 한쪽 시스템에 이용자가 몰린다면 과부하가 걸리고 다른쪽은 놀고 있는 상태가 된다. 이런 상태에서는 시스템 처리 성능이 두배가 됐다고 말하기 어렵다. 이 구조는 지리적으로 멀리 떨어진 시스템에 자주 이용된다. 또, 공장처럼 각 거점이 완전히 독립된 운영을 하고 있는 경우에도 적합하다. 예를 들어 SMS는 사용자 ID를 기준으로 서버를 분할 하는 경우가 있다.
장점
- 수평으로 서버를 늘리기 때문에 확장성이 향상된다.
- 분할한 시스템이 독립적으로 운영되므로 서로 영향을 주지 않는다.
단점
- 데이터를 일원화해서 볼 수 없다.
- 애플리케이션 업데이트는 양쪽을 동시에 해 주어야 한다.
- 처리량이 균등하게 분할돼 있지 않으면 서버별 처리량에 치우침이 생긴다.
1.4.2 공유형 아키텍처
공유형에서는 단순 분할형과 달리 일부 계층에서 상호 접속이 이루어진다.
예를들어 데이터 계층을 동기처리하여 상호접속할 수 있다. 데이터에 다른 두개의 시스템이 각자 접속할 수 있다. 데이터 계층은 저장고의 역할도 하기 때문에 보안이 필요한 데이터가 저장되는 경우도 많다. 데이터가 각지에 흩어져 있는것 보다 한곳에서 집중적으로 관리하는 것이 보안상이나 관리상 유리한 경우가 있다. 또한, 이구성에서는 데이터를 모아서 참조할 수 있다.
장점
- 수평으로 서버를 늘리기 때문에 확장성이 향상된다.
- 분할한 시스템이 서로 다른 시스템의 데이터를 참조할 수 있다.
단점
- 분할한 시스템 간 독립성이 낮아진다.
- 공유한 계층의 확장성이 낮아진다.
가상화 진행 상황
대형 컴퓨터는 높은 비용이 문제였지만, 지금은 저가 서버도 충분한 성능을 가지고 있기 때문에 시스템 전체를 한 대로 집약해도 별다른 문제가 없을 수 있다. 하지만 서버 한대에 지나치게 집약하면 확장성 문제가 불거질 수 있다. 또한, 저가 서버는 안정성에 문제가 있을 수 있다.
집약과 분할형 양쪽의 장점을 취하는 접근법이 '가상화'이다. 물리 서버를 가상화 기능으로 여러 대의 가상 서버로 분할하는 방식이다. 예를 들어 두 대의 웹 서버와 두 대의 AP서버, 총 네대의 가상화 서버를 하나의 물리서버에서 운영할 수 있다. 물리 서버를 이중화해서 한 대가 망가지더라도 계속해서 운영할 수 있다.
이 구성의 특징은 물리 서버가 두대이기 때문에 안정성이 높다. 다른 한가지는 가상 서버를 다른 환경으로 옮기기가 쉬워서 물리 서버 성능이 한계에 이르더라도 확장성을 보장할 수 있다는 것이다. 현재는 대부분의 기업형 업무 시스템이 이런 가상화 구성을 채택하고 있다.
1.5 지리 분할형
업무 연속성 및 시스템 가용성을 높이기 위한 방식으로 지리적으로 분할하는 아키텍처
1.5.1 스탠바이형 아키텍처
스탠바이구성, HA구성, 액티브-스탠바이 구성 등으로 불리는 형태다. 물리 서버를 최소 두 대를 준비하여 한 대가 고장 나면 가동 중인 소프트웨어를 다른 한대로 옮겨서 운영하는 방식이다. 이때 소프트웨어 재시작을 자동으로 하는 구조를 페일오버(failover)라고 한다. F/O
이 방식에서는 물리 서버 고장에 대처할 수 있지만, 보통 때는 페일오버 대상 서버(스탠바이)가 놀고 있는 상태가 되기 때문에 리소스 측면에서 낭비가 발생한다. 이 문제를 해결하기 위해 스탠바이를 따로 두지 않고, 양쪽 서버를 동시에 교차 이용하는 경우도 있다. (한쪽이 고장나면 다른 한쪽이 양쪽을 처리) \참고로, 물리 서버가 아닌 가상화 서버를 이용하고 있는 경우는 서버 상의 소프트웨어 뿐만 아니라 가상 서버별로 다른 물리 서버에 페일오버하는 방식도 선택이 될 수 있다.
1.5.2 재해 대책형 아키텍처
인프라 아키텍처에서도 재해에 대응하기 위한 재해 복구 구성을 취하는 일이 잦아지고 있다. 예를 들자면, 특정 데이터 센터(사이트)에 있는 상용 환경에 고장이 발생하면 다른 사이트에 있는 재해 대책 환경에서 업무 처리를 재개하는 것을 가리킨다.
서버 장비를 최소 구성 및 동시 구성으로 별도 사이트에 배치하고 소프트웨어도 상용 환경과 동일하게 설정한다. 재해가 발생하면 전혀 다른 사이트에 있는 정보를 이용하게 된다.
여기서 문제가 되는 것은 애플리케이션 최신화와 데이터 최신화이다. 특히 데이터는 매일 갱신되기 때문에 어느 정도 실시간성을 유지해서 사이트 간 동기 처리를 해야 한다. 저장소 장비 기능, OS 기능, 데이터베이스 기능 등 동기 처리를 위한 방법은 여러 가지가 있다. 각각의 비용, 대상 데이터, 동기 연장 특성 등을 고려해서 결정할 필요가 있다.
1.5.3 클라우드형 아키텍처
3계층형 시스템의 일부 또는 전부가 클라우드 서비스 제공자가 보유하고 있는 물리 서버에서 동작한다. 대부분의 가상화 기술에서는 서버가 가상적인 존재로 동작한다.
클라우드 세계에서는 어떤 계층을 클라우드 상에 배치하는가에 따라 명칭이 달라진다. SaaS 모델에서는 서버뿐만 아니라 애플리케이션을 포함한 업무 시스템을 클라우드 서비스 회사가 제공하기 때문에 사용자는 인프라를 의식할 필요가 없다. SaaS의 대표적인 예로 야후 메일이나 Gmail등의 웹 메일 서비스가 있다.
PaaS, IaaS, DBaaS 등에서는 일반적인 3계층형 시스템을 구성하는 서버의 일부 혹은 전부를 클라우드 상의 리소스로 대체한다. 이 방식을 이용하면 인프라 설계자는 인프라를 의식해서 그 장점과 단점을 고려한 설계를 해야한다. 예를 들어, 물리 서버를 구입하는 것에 비해 비용이 낮고 바로 사용할 수 있는 장점이 있지만, 보안 문제나 클라우드 서비스 제공자와의 네트워크 연장 문제 등이 있을 수 있다. 양쪽의 장점만을 가져와서 사내 특정 부서에서는 사내 클라우드를 구성하고 사내 각 업무 시스템에는 PaaS/IaaS/DBaaS 형태로 제공하는 경우도 있다.
기술은 되물림되고 있다.
하드웨어나 소프트웨어 관련 새로운 기술은 매일같이 등장하지만 의외로 기본적인 구조는 바뀌지 않고있다. 예를 들어, 멀티프로세스 시스템, 가상 기억 시스템, 파일 시스템 같은 기능은 특별히 의식 하지 않고 공기처럼 사용하고 있지만, 원래는 범용 기계 시대에 개발된 구조다.
반응형
'# 01 > 네트워크' 카테고리의 다른 글
그림으로 공부하는 IT 인프라구조-6 (0) | 2019.02.05 |
---|---|
그림으로 공부하는 IT 인프라구조-5 (0) | 2019.02.05 |
그림으로 공부하는 IT 인프라구조-4 (0) | 2019.02.05 |
그림으로 공부하는 IT 인프라구조-3 (0) | 2019.02.05 |
그림으로 공부하는 IT 인프라구조-2 (0) | 2019.02.05 |