• 서버 아키텍처 - 모놀리식 아키텍처
    아키텍처 공부 2023. 1. 8. 23:22
    반응형

     

    - 모놀리틱 아키텍처

     위 그림은 가장 간단한 모놀리식 아키텍처이다. 웹 서버와 DB는 한대로 구성되어 있다. 구성이 간단하여 쉽게 구축할 수 있고, 웹서버가 무 상태성(stateless)일 필요가 없기 때문에 개발(로그인 인증 등)의 구현 또한 간단하다. 하지만, 트래픽의 증가 등으로 서버 확장성을 고려했을 때, 스케일 업(scale up)이라고 하는 수직적 규모의 확장만 가능하고, 어느 곳이라도 장애가 발생하면, 모든 서비스는 동작을 멈춘다.

     

    * 스케일 업: 메모리나 cpu성능을 향상시켜 웹 서버의 성능을 향상 시킴.

     

    - 로드밸런서

     

      위 그림은 웹서버 앞에 로드밸런서를 두면서 스케일 아웃(scale out)이라고 하는 수평적 규모의 확장을 진행하였다. 로드밸런서는 다양하게 활용 가능하다. 사내 시스템일 경우 사번 1~3으로 시작하는 사원은 웹 서버1, 사번 4~6으로 시작하는 사원은 웹 서버2, 사번 7~9으로 시작하는 사원은 웹 서버3으로만 접근하도록 설정도 가능하기도 하고, 웹서버의 CPU사용률에 따라 로드 밸런스를 하기도 한다. 어떻게 사용하는지에 따라 서버는 무 상태성이 되어야할 수도 있고 아닐 수도 있다. 위의 사내 시스템 예제처럼 사용한다면, 사번이 1~3인 사원은 항상 같은 서버만 사용하기 때문이다. 하지만 랜덤 또는 부하 기반의 로드 밸런스를 사용해야한다면, 웹서버는 무 상태성이 되어야한다. 그러면 웹 서버에서 로그인 인증에 세션을 사용한다던가 하는 작업은 별도의 인증 서버를 두고 처리하는 것이 좋고, 캐시를 사용하고 있다면, 레디스를 고려해볼 수 있다. 

     

    - 데이터베이스

     웹서버 뿐 아니라 데이터베이스도 모놀리틱하다면, 하나의 데이터베이스에 장애가 발생했을 경우 웹 서버가 스케일 아웃되어도 서비스를 제공할 수 없다.

     보통은 서버 사이에 주(main) - 부(replication)가 존재하며, 주 데이터베이스는 사용자의 요청으로 insert, update, delete의 쓰기 연산을 수행하여 데이터를 입력하고, 부 데이터베이스에 동기화 한다. 부 데이터베이스는 사용자의 select요청을 처리한다. 보통의 서비스는 select 연산이 대부분을 차지하기 때문에 부 데이터베이스는 다중화 되어있다.

     

    - 지리적 라우팅(geoDNS-routing, geo-routing)

     더 큰 아키텍처라면 데이터센터 단위의 아키텍처를 생각해볼 수 있다. 장애가 없는 상황에서 사용자의 위치에 따라 가까운 데이터 센터로 안내된다. 그 절차를 지리적 라우팅이라고 한다. 지리정 라우팅에서 geoDNS는 사용자의 위치에 따라 도메인 이름을 어떤 IP주소로 변환할지 결정할 수 있도록 해 주는 DNS 서비스다.

    다중 데이터 센터 아키텍처를 만들려면 몇 가지 기술적 난제를 해결해야한다. 트래픽 우회, 데이터 동기화, 테스트와 배포가 있다. 데티어 동기화를 상펴보면 데이터센터1에서 장애가 발생하면, 데이터센터1에 접근 지역에 있는 사용자는 데이터센터2로 로드밸런싱될 것이다. 하지만 데이터베이스가 나눠져 있으므로 원하는 데이터를 가져올 수 없는데, 이 상황을 해결하기 위해 넷플릭스는 데이터센터 단위의 동기화를 진행한다.  넷플릭스가 데이터센터 동기화방식을 Active-Active로 적용하였다.

     

    참고자료:

    반응형

    댓글

Designed by Tistory.