ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 대용량 시스템에 대한 이해
    대용량 데이터 & 트래픽/대용량 처리를 위한 mysql 2024. 3. 3. 22:09

    어플리케이션은 간단하게 클라이언트 - 서버 - 데이터베이스로 이루어진다.

     

    하지만 요즘에는 트래픽이 많아짐에 따라 클라이언트 - 웹 서버 - 웹 애플리케이션 서버 - 데이터베이스로 서버를 2개로 나누기도 한다.

     

    웹 서버에서는 정적인 호스팅을 해주고 웹 애플리케이션 서버에서는 동적인 작업들을 해주며 서버를 효율적으로 사용하고, 관심사의 분리도 이룰 수 있다.

     

     

    사진 : 패스트캠퍼스 -  백엔드 개발자를 위한 한 번에 끝내는 대용량 데이터 & 트래픽 처리

    위의 사진처럼 대용량 트래픽을 다루기 위해 많은 서버와 캐시, 데이터베이스, 비동기 큐를 사용한다. 이전의 프로젝트에서 이러한 방식은 사용하지 않았는데, 취업을 하기 전에 대용량 트래픽을 다루는 경험을 할 수는 없겠지만 경험이 아니더라도 공부는 할 수 있으므로 강의를 통해 학습하려고 한다.

     

     

     

    스케일업과 스케일 아웃

    대용량 트래픽에서 많은 요청을 처리하기 위해 스케일업과 스케일 아웃을 고려한다.

     

    스케일 업 : 서버를 키우는 것

    - 유지보수가 쉬움, 확장성에 제약, 서버가 1대라 장애복구 어려움

     

    스케일 아웃 : 서버를 분할하는 것

    - 여러 노드에 걸쳐 있어서 유지보수 어려움, 확장성이 자유로움, 장애에 탄력성이 있음

     

     

    스케일 아웃이 더 좋다고 생각되지만, 서버가 여러개여도 같은 요청에 항상 같은 결과를 반환해야하는 어려움과 스케일 아웃을 하기 위해서 훨씬 많은 비용이 필요하다는 단점이 있다.

     

    그럼에도 불구하고 스케일 아웃의 장점이 크기 때문에 트래픽이 많을 때 사용을 하는 것이 좋으며, nginx의 로드 밸런싱같은 기술을 생각하면 스케일 아웃을 더 쉽게 이해할 수 있다.

     

     

     

     

    대용량 시스템이 어려운 이유

    • 하나의 서버로 감당하기 힘들엉서 대부분 여러 서버, 데이터베이스를 사용하는데 여러 서버에서 유입되는 데이터의 일관성을 보장할 수 있어야 한다.
    • 여러 서비스들이 얽혀있어서 시스템 복잡도가 상당히 높다.

     

    다음 포스팅부터 대용량 시스템 관리 방법의 첫 번째인 mysql에 대해서 공부할 것이다.

     

     

Designed by Tistory.