EC2에서 실행되는 네트워크 애플리케이션에 대한 일반적인 조언

EC2에서 실행되는 네트워크 애플리케이션에 대한 일반적인 조언

네트워크 애플리케이션을 작성하여 단일 EC2 인스턴스(M1 대형)에 배포했습니다.

이 애플리케이션은 일종의 채팅방(메시지 전송 이외의 다른 작업만 가능) 역할을 하며, 스마트폰 소유자가 가까운(물리적) 근접(예: 최대 5미터) 거리에서 통신할 수 있도록 해줍니다.

이것은 나의 첫 번째 네트워크 응용 프로그램이며 이에 대해 몇 가지 의심과 질문이 있습니다.

  1. 이것은 매우 선별적인 채팅방이기 때문에(매우 가까운 사람들만 볼 수 있습니다) 로드 밸런싱을 어떻게 수행할 수 있는지 모르겠습니다. 예를 들어 유럽과 미국의 두 인스턴스를 예로 들면 사람들을 유럽에서 전자로, 미국에서 후자로 리디렉션하는 것을 좋아합니다. 이러한 리디렉션을 보장할 수 없다면 전체 응용 프로그램은 쓸모가 없습니다. Route 53을 사용하여 이를 수행할 수 있는 방법이 있습니까? 그렇게 하는 데 의미가 있나요? 하나의 대규모 인스턴스로 충분하지 않습니까?

  2. 인스턴스의 과부하 성능을 테스트해 보았습니다. 그래서 저는 시간당 200,000개의 요청을 시뮬레이션하는 자체 애플리케이션을 작성하고 이를 다른 EC2 인스턴스에서 실행했습니다. 문제가 없는 것 같았습니다(일부 요청에 대한 대기 시간 증가를 제외하고는 많은 양의 연결을 동시에 허용할 때 높은 CPU 사용률이 정상적으로 들리는 것 제외) 제 질문은 500K를 예상하면 좋은 로드 테스트처럼 보입니까? 사용자. 나는 이것이 다소 모호한 질문이라는 것을 알고 있지만 다소 모호한 대답으로도 충분할 것입니다.

  3. 보안이 현명합니다. 보안 침해 위험을 줄이려면 어떤 일반적인 예방 조치를 취해야 합니까? 방화벽에서 모든 포트(내 애플리케이션 수신 포트 제외)를 비활성화하는 것이 좋은 생각입니까? 아니면 중복됩니까? 다시 말하지만 다소 모호한 질문입니다. 일반적인 답변에 감사드립니다.

감사해요

답변1

  1. 애플리케이션이 근접 기반이므로 혼선이 거의 또는 전혀 필요하지 않고 다양한 지역에 서버를 설정할 수 있습니다. Route53의 "대기 시간 기반 라우팅" 기능을 활용해 보세요. 대부분의 경우 이로 인해 사람들이 가장 가까운 서버에 접근하게 됩니다. 그러나 "지역 기반 라우팅"이 아니기 때문에 보장되지는 않습니다. 단일 대규모 인스턴스에 비해 전 세계 여러 서버의 이점은 클라이언트와 서버 간의 대기 시간을 줄일 수 있다는 것입니다.

  2. 시뮬레이션이 사용자의 사용량을 적절하게 표현한다면 결과는 많은 것을 알려줄 것입니다. 시간당 200,000개의 요청이 500,000명의 사용자에 대한 활동을 적절하게 나타낸다면 괜찮을 것입니다. 그렇지 않은 경우 테스트를 조정하십시오. 핵심은 테스트가 50만 명의 사용자를 올바르게 나타내도록 하는 것입니다. 그러면 결과도 그렇게 될 것입니다.

  3. 애플리케이션에 필수적이지 않은 모든 것에 대해서는 보안 그룹의 포트를 닫습니다. RDP, SSH 또는 데이터베이스 포트를 열어두지 마십시오. 애플리케이션 포트만 열어두세요.

관련 정보