이번 하반기 동안 인프라에 대해 공부를 할 예정이고 이 책을 토대로 이 곳에 정리하려고 한다.
1.1 인프라란 무엇인가
인프라는 '기반'이라는 뜻으로, 우리의 생활을 지탱하는 바탕이나 토대라는 의미이다.
IT 인프라도 예를 들어 우리가 편리한 검색을 할 수 있도록 도와주는 역할을 한다.
아키텍처는 '구조'라는 의미이다. 이 책에서는 기차를 예로 든다. 기차에도 다양한 종류가 있지만, 그 구조 자체가 거의 같다. 즉, 기차의 '구조'또는 '아키텍처'가 확립되고, 이미 공통화되어 있다.
'인프라 아키텍처'란 즉, IT의 인프라의 '구조'를 의미하는 것이다.
1.2 집약형과 분할형 아키텍처
IT 인프라는 컴퓨터로 구성된다. 기본적인 구성 방식에는 '집약형'과 '분할형'이 있다.
집약형이란 모든 장치가 다 모여있다고 생각하면 된다. 하나의 컴퓨터로 모든 처리를 하기 때문에 '집약형'이라고 할 수 있다.
장점으로는
- 한 대의 대형 컴퓨터만 있으면 되므로 구성이 간단하다
- 대형 컴퓨터의 리소스 관리나 이중화에 의해 안정성이 높고 고성능이다.
단점으로는
- 대형 컴퓨터의 도입 비용과 유지 비용이 비싸다는 것
- 비용이 비싸기 때문에 확장성에 한계가 있다는 것이다.
다음으로 분할형 아키텍처에 대해서 알아보자. 분할형 아키텍처는 여러 대의 컴퓨터를 조합해서 하나의 시스템을 구축하는 구조이다. 분할형 아키텍처는 표준 OS나 개발 언어를 이용하기 때문에 '오픈 시스템'이라고도 불리고, 여러 대의 컴퓨터를 연결해서 이용하기 때문에 '분산 시스템'이라고도 불린다.
장점으로는
- 낮은 비용으로 시스템을 구축할 수 있다.
- 서버 대수를 늘릴 수 있어서 확장성이 높다.
단점으로는
- 대수가 늘어나면서 관리 구조가 복잡해지는 것
- 한 대가 망가지면 영향 범위를 최소화하기 위한 구조를 검토해야 한다는 것이다.
1.3 수직 분할형 아키텍처
분할형에서는 서버 분할 방식을 고려해야 한다. 각각의 서버가 전혀 다른 작업을 하는 것인지, 아니면 비슷한 작업을 하는 것인지에 대한 관점이다. 그 중에서 수직 분할형 아키텍처는 서버별로 다른 역할을 담당하는 것이다.
1. 클라이언트 - 서버형 아키텍처
소프트웨어에 '클라이언트' 또는 '단말'이라 불리는 소형 컴퓨터가 접속해서 이용하는 형태이다. C/S라고 부르기도 한다.
장점으로는
- 클라이언트 측에서 많은 처리를 실행할 수 있어서 소수의 서버로 다수의 클라이언트를 처리할 수 있다는 것
단점으로는
- 클라이언트 측의 소프트웨어 정기 업데이트가 필요하다는 것
- 서버 확장성에 한계가 발생할 수 있다는 것(서버에 처리가 집중되면..)
2. 3계층형 아키텍처
3계층형은 수직 분할형의 한 가지 예인데, 클라이언트-서버형을 발전시킨 것이다.
3계층형은 '프레젠테이션 계층', '애플리케이션 계층', '데이터 계층' 3층 구조로 분할되어 있어서 3계층형이라고 부른다.
먼저 프레젠테이션 계층
- 사용자 입력을 받는다.
- 웹 브라우저 화면 표시
애플리케이션 계층
- 사용자 요청(request)에 따라 업무 처리를 한다.
데이터 계층
- 애플리케이션 계층의 요청에 따라 데이터 입출력을 한다.
장점으로는
- 서버 부하 집중 개선
- 클라이언트 단말의 정기 업데이트 불필요
- '처리 반환'에 의한 서버 부하 저감
단점으로는
- 구조가 클라이언트-서버 구성보다 복잡하다는 것이다.
우리가 사용하고 있는 대부분의 인터넷 사이트, 모바일 사이트, 사내 업무 시스템이 3계층 구조를 채용하고 있다.
1.4 수평 분할형 아키텍처
서버별로 다른 역할을 하도록 시스템을 수직으로 확장하는 구조가 위에 구조였다. 그러나 더 높은 확장성을 실현하기 위해서는 다른 하나의 축으로 분할하는 것도 필요하다.
'수평 분할형 아키텍처'는 용도가 같은 서버를 늘려나가는 방식이다. 대부분의 시스템이 수직분할형과 수평분할형 두 가지 방식을 같이 사용하고 있다.
1. 단순 수평 분할형 아키텍처
수평 분할은 Sharding(샤딩) 이나 Partitioning(파티셔닝)이라 부르기도 한다. 이러한 구조는 거래상으로 멀리 떨어진 시스템에서 자주 이용된다. 또, 공장처럼 각 거점이 완전히 독립된 운영을 하고 있는 경우에도 적합하다. 또한, 많은 사용자가 있는 SNS 웹 서비스에서는 사용자 ID를 기준으로 서버를 분할하는 경우가 있다.
장점으로는
- 수평으로 서버를 늘리기 때문에 확장성이 향상된다
- 분할한 시스템이 독립적으로 운영되므로 서로 영향을 주지 않는다.
단점으로는
- 데이터를 일원화해서 볼 수 없다
- 애플리에키션 업데이트는 양쪽을 동시에 해주어야 한다.
- 처리량이 균등하게 분할되어 있지 않으면 서버별 처리량에 치우침이 생긴다는 것이다.
2. 공유형 아키텍처
공유형에서는 단순 분할형과 달리 일부 계층에서 상호 접속이 이루어진다. 공통의 데이터를 사용하는 경우 이런 아키텍처를 사용한다.
장점으로는
- 수평으로 서버를 늘리기 때문에 확장성이 향상된다
- 분할한 시스템이 서로 다른 시스템의 데이터를 참조할 수 있다.
단점으로는
- 분할한 시스템 간 독립성이 낮아진다
- 공유한 계층의 확장성이 낮아진다는 것이다.
댓글