일상생활에서 사용되는 구글, 유튜브 등등 이런한 서비스를 어디에서 방대한 데이터를 주고 받을까? 그리고 이런 데이터는 어떻게 처리해서 우리에게 보여줄까? 이런 것들을 처리하고 보여주고 관리하는 환경을 인프라라고 한다.
아키텍처란 무엇일까? 구조를 뜻한다. 위에서 언급한 인프라에서 데이터를 관리하고 처리하는 구조에는 무엇이 있을까?
4가지로 나눌 수 있다.
- 집약과 분활
- 수평 분할
- 수직 분할
- 지리 분할
다양한 구조가 존재한다. 왜 이런 구조를 가질까 그냥 간단하게 하나에 구조로 가지고 인프라를 만들면 되지 않을까?라는 생각이 들 수 있다. 이러한 구조에는 장,단점이 존재하고 장점만 가지고 구조를 만들기가 힘들다. 제약이 존재하기 때문이다. 가장 큰 제약은 바로 비용이다. 구조마다 들어가는 비용이 다르기 때문에 상황에 맞는 구조를 설계해서 사용하는것이 중요하다. 4가지 특징에는 무엇이 있을까?
집약형 아키텍처는 하나의 컴퓨터로 다양한 업무를 수행할 수 있는 아키텍처를 집약형으로 부른다. 그러기 때문에 하나의 컴퓨터로 모든 일을 처리해야하기 때문에 다중화가 돼야한다. 예를 들어 CPU 하나가 고장 나더라도 다른 하나가 일을 지속적으로 해야 한다거나 여러 요청을 막힘없이 다 수행할 수 있게 설계된 아키텍처이다.
장점
- 구성이 간단하다
- 안정성이 높고 고성능이다.
단점
- 도입비용과 유지비용이 비싸다
- 한 대로 하기 때문에 확장성에 한계가 존재한다.
분할형 아키텍처는 여러 컴퓨터로 일을 분활하여 수행한다. 보통 서버컴퓨터가 분할형으로 사용된다. 집약형과 다르게 한대의 컴퓨터로 다양한 일을 하지만 분할형을 일을 분할해서 일을 처리한다는 특징이 있다. 분할형은 안정성이 낮아도 괜찮기 때문에 저가장비를 이용해서 비용을 낮출 수 있고 더 많은 컴퓨터를 이용할 수 있어 성능을 향상 시킬 수 있어서 확장성이 좋다.
서버가 늘면 운영하는데 어려워 진다. 구조가 복잡해지기 때문에 세세하게 검토하고 관리해야한다
장점
- 낮은 비용으로 시스템 구축
- 높은 확장성
단점
- 구조가 복잡하다
- 한대가 망가지면 미치는 영향을 최소화하기 위해 구조를 검토해야한다.
서버 컴퓨터가 분활형으로 사용된다고 하면 서버는 무엇일까? 서버를 부를 때는 서버 컴퓨터를 부를 수도 있고 소프트웨어를 가리킨다. 두 개의 차이는 무엇일까?
우리가 웹페이지에 들어가면 처음으로 보이는 곳이 있을것이다. 네이버에 들어가면 첫 화면을 웹서버라고 부르고 내가 로그인했을때 나의 로그인 정보를 DB에서 확인해서 로그인을 수락해주는 그런 과정을 논리서버라고 부른다.
물리 서버
물리서버는 논리서버를 실행시켜주고 저장해주는 하드웨어적인 역활을 해주는 서버를 물리서버라고 한다.
물리서버 상에서 운영한다. 클라이어트라는 소형 컴퓨터를 이용해서 처리한다.
특징으로는 클라이언트 쪽에서 필요한 스프트웨어를 설치해야한다. 필요한 작업을 위해서 소프트웨어를 설치해서 사용한다. 하지만 기능추가나 버그 때문에 정기적인 업데이트를 해줘야 한다. 서버에 처리가 집중되면 확장성에 한계가 발생할 수 있다.
장점
- 소수의 서버로 다수의 클라이언트 처리
단점
- 정지적인 업데이트 필요
- 서버 확장성에 한계 발생
3계층형은 클라이언트-서버형을 보완한 구조이다.
프레젠테이션 - 애플리케이션 - 데이터 계층
3계층형은 이러한 구조로 되어있다.
간단히 계층별로 설명하면
💻프레젠테이션
- 웹화면(FRONT-END)
💻애플리케이션
- 서버(BACK-END)
💻데이터
- DB(데이터베이스)
웹서버에서 요청된 값을 애플리케이션에 전송해서 요청된 값을 처리한 뒤 DB에 데이터를 요청하는 계층으로 데이터가 처리된다.
이런 특징 덕분에 서버부하를 막을 수 있다. 사용자는 웹브라우저만 있으면 되기 때문에 클라이언트 업데이트가 필요없다. 단점은 시스템 구조가 커질 수록 클라이언트-서버형보다 복잡해지는 단점이 존재한다.
장점
- 서버 부하 개선
- 정기 업데이트가 불필요
- '처리 반환'에 의한 서버 부하 저감
단점
- 구조가 복잡하다.
대부분의 웹,모바일은 3계층형을 사용한다.
**수평 분할형은 용도가 같은 서버를 늘려서 안전성과 성능향상을 일으킨다.
수평 분할은 "sharding(샤딩)"이나 "Partitioning(파티셔닝)"으로 부르기도 한다.
하나에 서버를 여러 서버로 분할해서 처리하기 때문에 독립성이 향상되는 장점이 있다. 하지만 서로 다른 서버로 사용되기 때문에 양쪽에 데이터를 동시에 사용할 수 없다는 단점이 존재한다.
장점
- 확장성이 향상
- 독릭성이 향상
단점
- 데이터 일원화 불가능
- 애플리케이션 업데이트를 동시에 해야한다.
- 분활된 서버라서 처리량이 한쪽으로 치우칠 수 도 있다.
공유형은 일분 계층에서 상호접속이 가능하다.
장점
- 확장성이 향상된다
- 서로 다른 시스템을 데이터 참조 가능
단점
- 독립성이 낮아진다
- 확장성이 낮아진다.
스탠바이형은 물리서버를 두 대 이상을 운영한다. 현재 사용하고 있는 서버 고장 났을 시 사용하기 위해 대비할 수 있게 존재한다. 이러한 형태를 엑티브-스탠바이로 부르기도 한다. 현재 엑티브한 서버가 고장나면 자동으로 스탠바이 서버가 재시작할 수 있도록 하는 구조를 "페일오버"라고 부르기도 한다. 이러한 방식은 고장이 나기전에는 사용하지 않기 때문에 낭비가 될 수도 있다. 이러한 문제를 해결하기 위해서 스탠바이를 안 쓰고 서버를 교차 이용해서 이러한 문제를 해결 할 수도 있다.
평상시에는 기본적인 서버를 이용하다가 재해 발생하면 준비해둔 서버를 재해가 발생하자마자 사용할 수 있는 서버를 준비해둔다. 하지만 이러한 서버 구조는 재해가 발생하지 않으면 사용하지 않지만 재해가 발생하면 사용해야하기 때문에 대비해서 꾸준이 관리해주고 업데이트를 최신화해줘야 한다.
이 내용은 그림으로 공부하는 IT인프라 구조를 참고했습니다.