시스템 아키텍처 설계

강혜성·2023년 4월 20일
0
  • 현재 진행하는 프로젝트에서 시스템 아키텍처 설계 역할을 맡았다.
  • 또한, 금주 일어지는 프로젝트 기획 발표에서 구체적인 수치를 언급하고 싶다는 요구사항을 받아, 어떻게든 구체적인 수치를 넣을 수 있는 방법을 생각 해 작성했다.
  • cloudcraft를 이용해서 제작했다. https://www.cloudcraft.co/

시스템 아키텍처

시스템 아키텍처 사용자 관점

  1. 사용자가 웹 사이트에 접근하게 되면 Front Deploy Server에서 Nginx를 통해 Build된 React를 받게 된다.

  2. 사용자가 서버에서 처리해야 하는 요청을 보낼 경우, 해당 API는 Nginx를 통해서 Load Balancer에 전달된다.

  3. Load Balancer는 2개의 WAS의 상태를 확인 한 후 가용할 수 있는 서버에 해당 요청을 분배한다.

  4. 각 각의 WAS는 사용자의 요청을 처리하며 분산 처리가 필요한 경우에는 Apache Kafka 메시징 시스템을 이용해 분산 처리가 실행된다.

  5. 또한, 각 WAS들은 DB와 연결되어 Data를 처리한다.

장점

  • 확장성: 로드 밸런서와 Apache Kafka를 사용하여 서비스의 부하 분산과 확장성을 향상시킬 수 있습니다. WAS를 추가하거나 삭제하면서 시스템의 처리량을 유연하게 조절할 수 있습니다.

  • 가용성: 로드 밸런서를 사용하여 여러 대의 WAS에 요청을 분산시키므로, 하나의 WAS가 다운되더라도 서비스 전체에 영향을 미치지 않습니다. 이는 시스템의 가용성을 높이는 데 기여합니다.

  • 성능: Nginx를 통해 정적 리소스를 캐싱하고 효율적으로 전달함으로써, 성능을 향상시킬 수 있습니다. 또한, Apache Kafka를 사용하여 WAS 간의 통신을 효율적으로 처리하므로, 서비스의 응답 시간을 단축시킬 수 있습니다.

  • 비용 효율성: WAS를 여러 대 사용하여 부하를 분산시키면서, 하드웨어 리소스를 효율적으로 활용할 수 있습니다. 또한, AWS EC2와 같은 클라우드 서비스를 사용하여 인프라를 구축함으로써, 운영 비용을 절감할 수 있습니다.

구체적인 수치

  • 가용성 : 서비스할 수 있는 WAS가 2개이기 때문에, WAS에 문제가 발생할 가능성은 단순 산술 계산으로 1/2로 줄어들 수 있다. 또한, 로드 밸런서를 사용하여 요청을 분산시키면, 하나의 WAS가 처리할 수 있는 요청 수를 초과해도 시스템 전체에 영향을 미치지 않아 실제로는 문제가 발생할 경우는 더 적다.

  • 성능: Nginx를 통해 정적 리소스를 캐싱하고 효율적으로 전달함으로써, 요청 처리 속도를 높일 수 있습니다. 또한, Apache Kafka를 사용하여 WAS 간의 통신을 효율적으로 처리함으로써, 응답 시간을 단축할 수 있습니다. 대부분의 요청에 대해 100ms 이하의 응답 시간을 달성할 수 있다.

  • 비용 효율성: 클라우드 서비스를 사용하여 인프라를 구축함으로써, 운영 비용을 절감할 수 있습니다. 또한, WAS를 여러 대 사용하여 하드웨어 리소스를 효율적으로 활용함으로써, 적은 비용으로 높은 처리량을 달성할 수 있습니다.
    전체 시스템을 구성하는데 약 80만원 정도가 들었지만, 성능을 2배로 높이기 위해서 필요한 비용은 약 30만원이다.

0개의 댓글