직방 사례 분석

jjuyaa·2022년 9월 22일
0

CloudClub

목록 보기
3/8

1. 직방이란?

  • 부동산 매물 검색 서비스 운영 업체
  • 부동산 매물을 찾아주는 모바일/온라인 애플리케이션
  • 부동산 애플리케이션 시장에서 약 70% 정도 차지 하고 있다.

2. 당면 과제

  1. 고가용성 데이터 베이스 인프라 관리 필요 +ㅜ 애플리케이션 데이터 베이스 운영 유지에 지원 필요
  2. 사용자 수요 급증에 따라, 신속한 지원을 위해 확장성과 안정성 필요 + 속도 저하 및 서비스 중단으로 인한 경쟁사로 고객의 이동을 방지 위해 항상 고가용성 유지 필요
  3. 초기 앱 다운로드 증가에 따라 커지는 인프라 비용 최소화 필요
    => 핵심은 무결성!

2-1. 고가용성, 확장성, 안정성, 무결성

  • 고가용성 : 서버와 네트워크 , 프로그램의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 장애 없이 정상 운영이 가능한 성질이다. 보통 99.9% 와 같은 비율로 표현
  • 확장성 : 서비스나 응용 프로그램이 증가하는 성능 요구에 맞게 향상될 수 있는 정도
  • 안정성 : 필요할 때 의모한 기능을 정확하고 일관되게 수행하는 것
  • 무결성 : 신뢰할 수 있는 서비스 제공을 위해서 의도하지 않은 요인에 의해 데이터, 소프트웨어, 시스템 등이 변경되거나 손상되지 않고 완전성, 정확성, 일관성을 유지함을 보장하는 특성.

3. 해결 방법

3-1. S3 & RDS & Amazon SQS 사용

Amazon SQS란?

마이크로 서비스, 분산 시스템 및 서버리스 애플리케이션을 위한 완전관리형 메시지 대기열

  • Amazon Simple Queue Service(SQS) 는 마이크로 서비스, 분산 시스템 및 서버리스 애플리케이션을 쉽게 분리하고 확장할 수 있도록 지원하는 완전 관리형 메시지 대기열 서비스
  • 서비스 커질수록 서버 한 대로 처리 힘들다 -> 각 기능을 여러 서버에서 처리 -> 서버들끼리 주고 받는 메세지 잃어버리지 않아야 고가용성 유지 가능하다. 따라서 SQS는 서버들끼리 주고 받는 메시지 정확하게 처리

동작 방식

  • 시스템에는 메시지를 대기열로 전송하는 생산자, 대기열의 메세지를 수신하는 소비자가 존재한다. 그리고 이 메세지가 들어있는 대기열은 여러 Amazon SQS 서버에 메시지를 중복 저장한다.
  • 생산자가 메시지 A 를 대기열로 전송 -> A는 Amazon SQS 서버에 중복 분산 -> 소비자가 메시지 처리 준비될 경우 대기열에서 메시지 소비해 메시지 A 반환

장점

  1. 관리 오버헤드 제거 : SQS 대기열이 동적으로 생성되고 , 자동으로 확장되므로 애플리케이션 신속하고 효율적으로 구축 및 확장 가능
  2. 메시지 안정적으로 전달 : SQS를 사용해 애플리케이션 구성요소를 분리할 수 있다. 이를 통해 구성 요소가 독립적으로 실행되어 장애가 발생하여도 , 시스템이 복구되면 처리되도록 메시지를 대기열에 추가 가능. 또한 모든 메세지의 복사본 여러 개가 다중 가용 영역 전체에 중복 저장되어 필요할 때 언제든 사용 가능
  3. 보안 : 서버측 암호화(SSE) 통해 각 메세지 본문 암호화해 애플리케이션 간에 민감한 데이터 교환 가능 (AWS KMS)
  4. 탄력적이고 비용 효율적으로 확장 : SQS는 애플리케이션 상태 따라 탄력적으로 확장되어 용량 계획과 사전 프리프로비저닝에 대해 걱정할 필요 없다. 또한 메시지 대기열에서 프로세스를 분리하므로, 다른 프로세스를 추가하기만 하면 손쉽게 메시지 송신이나 수신 속도 높일 수 있다. 비용은 사량을 기준으로 부과되므로 비용 절감 제공

S3 & RDS & SQS 통한 고가용성 데이터 베이스 관리 및 운영

  • S3를 통해 사용자 및 부동산 중개 사무소등의 정보를 저장하고, RDS를 이용해 관계형 데이터 베이스를 쉽게 운영할 수 있다.
  • 또한 SQS를 이용함으로써, 기존에 모든 트랜잭션을 데이터 베이스에 의존했지만, 구성요소를 독립적으로 실행해 데이터 베이스에 문제가 생겼을때도 모든 거래를 안전하게 처리할 수 있다.

3-2 . EC2 인스턴스 , Auto Scaling, ELB , SQS 사용

Auto Scaling 이란 ?

  • 애플리케이션을 모니터링하고 , 용량을 자동으로 조정하여 최대한 저렴한 비용으로 안정적이고 예측 가능한 성능 유지
  • 여러 서비스 전체에서 여러 리소스에 대해 애플리케이션 규모 조정 가능
  • 이미 Amazon EC2 Auto Scaling 을 사용해 EC2 인스턴스를 동적으로 조정하고 있는 경우 Auto Scaling 과 결합해 다른 AWS 서비스의 추가 리소스 조정 가능
  • 생성한 EC2 인스턴스를 ELB 로드 밸런서에 연결하고 , ELB 로드밸런서느 ㄴ새로 생성된 EC2 인스턴스에 트래픽을 분산
  • 보통 cloudwatch 와 연동해 제공하는 측정치와 연동해 조정한다.

ELB 란?

네트워크 트래픽을 분산해 애플리케이션 확장성을 개선한다.

  • 부하 분산과 고가용성을 제공하는 서비스
  • 한 곳으로 집중되는 HTTP, TCP, SSL 트래픽을 여러 EC2 인스턴스로 분할하고, 서버가 정상적으로 가동중인지 확인(Health Check) 해 일부 EC2 인스턴스가 중단되도라고 트래픽을 정상 EC2 로만 보낸다.
  • ELB 는 리전별로 생성해야하고, 여러 가용 영역에서 실행되는 EC2 인스턴스로 부하 분산 가능 따라서 가용 영역 전체가 중단되도 서비스 정상적 제공 가능

확장성, 안정성, 고가용성 유지 및 비용 절감

  • EC2 인스턴스의 확장성 뿐만 아니라 AutoScaling 을 통해 다양한 리소스를 조정해 비용을 절감하고, 확장성을 가질 수 있다.
  • 또한 ELB를 통해 트래픽을 분산해 고가용성을 가진다.
  • SQS를 통해 구성요소를 분리해 확장성을 가질 수 있고, 다른 구성 요소가 작동하지 않더라도 메세지가 안정적으로 전달되어 애플리케이션이 동작하도록 할 수 있다.

4. 정리

  • S3 , RDS , SQS -> 고가용성 데이터 베이스 관리에 용이
  • EC2, AutoScaling,ELB,SQS 사용 -> 트래픽 분산, 트래픽에 따라 리소스 유연한 조정 가능, 고가용성

0개의 댓글