PORTFOLIO/TROUBLESHOOTING

[CodeChef - 트러블 슈팅] EC2 독립 선언: 한 서버에 갇힌 서비스들을 해방하다.

jki09871 2025. 1. 6. 15:49

[배경]

EC2 분산 배포에 대한 설명

현재 EC2 하나에 카프카, 엘라스틱서치, 레디스, 스프링부트 서비스를 모두 배포하는 구조에서, 해당 EC2 인스턴스에 장애가 발생하면 모든 서비스가 동시에 중단될 위험이 있습니다. 따라서 각 서비스를 개별 EC2 인스턴스에 배포하여 분산고가용성을 보장할 필요성이 커졌습니다.


[요구사항]

각각의 서비스인 레디스, 카프카, 엘라스틱서치, 스프링부트를 각기 다른 EC2 인스턴스에 배포해야 합니다. 이를 통해 서비스 간 독립성을 보장하고, 한 인스턴스에 장애가 발생하더라도 다른 서비스는 정상적으로 동작할 수 있도록 하는 것이 목표입니다.


[선택지]

1. 각각 EC2에 배포

  • 각 서비스마다 별도의 EC2 인스턴스를 할당하여 배포합니다.
  • 장점:
    • 고가용성: 한 EC2에 문제가 생겨도 다른 EC2에서 서비스가 지속되므로 시스템의 전반적인 가용성을 높일 수 있습니다.
    • 성능 최적화: 각 서비스는 전용 리소스를 사용하여 성능이 최적화됩니다.
    • 유지보수 용이: 각 서비스가 독립적이므로, 하나의 서비스를 수정하거나 업데이트할 때 다른 서비스에 영향을 미치지 않습니다.
  • 단점:
    • 비용: EC2 인스턴스를 별도로 운영해야 하므로 비용이 증가합니다.
    • 복잡성: 서비스가 분리되므로 관리와 설정이 복잡해질 수 있습니다. 특히 네트워크 및 보안 설정을 세밀하게 해야 합니다.
    • 서비스 간 통신 지연: 각 서비스가 다른 EC2 인스턴스에서 실행되므로 네트워크 지연(latency)이 발생할 수 있습니다.

2. 모든 서비스를 하나의 EC2에 배포

  • 한 EC2 인스턴스에 모든 서비스를 배포하여 관리합니다.
  • 장점:
    • 비용 효율성: EC2 인스턴스를 한 대만 운영하므로 비용이 적게 듭니다.
    • 단순성: 한 EC2에서 모든 서비스를 실행하므로 설정과 관리가 간단합니다.
  • 단점:
    • 고가용성 부족: 한 EC2에 문제가 생기면 모든 서비스가 동시에 중단됩니다.
    • 성능 제한: 여러 서비스가 동일한 리소스를 공유하게 되어 성능 저하가 발생할 수 있습니다.

[의사결정/사유]

각각의 서비스를 별도의 EC2 인스턴스에 배포하는 것이 장기적인 안정성성능 측면에서 유리하다고 판단하였습니다. 여러 인스턴스를 활용하면 각 서비스가 독립적으로 운영되므로 장애 발생 시 다른 서비스에 미치는 영향을 최소화할 수 있습니다. 또한, 성능 최적화가 가능하고, 유지보수가 용이해집니다.


[회고]

기술의 장단점

  • 장점:
    1. 고가용성: 각 서비스가 별도의 EC2 인스턴스에서 동작하여 하나의 서비스 장애가 다른 서비스에 영향을 미치지 않음.
    2. 성능 최적화: 서비스마다 리소스를 전용으로 할당할 수 있어 성능 최적화가 가능.
    3. 유지보수 용이성: 각 서비스가 독립적으로 관리되므로 장애 추적과 문제 해결이 더 용이함.
  • 단점:
    1. 비용 증가: EC2 인스턴스를 여러 대 배포해야 하므로 운영 비용이 증가함.
    2. 관리 복잡도: 여러 인스턴스를 관리하기 위한 네트워크 설정 및 보안 설정이 복잡해질 수 있음.
    3. 서비스 간 통신 지연: EC2 인스턴스가 분리되어 있기 때문에 서비스 간의 통신에서 약간의 지연이 발생할 수 있음.

다시 시도한다면?

  • 모니터링 및 자동화 강화: EC2 인스턴스 수가 늘어나면서 발생할 수 있는 관리 복잡도를 줄이기 위해 모니터링 시스템자동화 도구를 더 적극적으로 활용할 것입니다. 예를 들어, AWS CloudWatch, AWS Auto Scaling, AWS Systems Manager 등을 통해 모니터링자동화를 강화할 수 있습니다.
  • 네트워크 최적화: 여러 EC2 인스턴스 간의 네트워크 지연을 줄이기 위해 VPC 내 서비스 통신 최적화를 고려할 수 있습니다. 이를 통해 서비스 간의 지연을 최소화하고 안정성을 높일 수 있습니다.
  • 비용 최적화: EC2 인스턴스의 수와 성능을 고려하여 스팟 인스턴스온디맨드 인스턴스와 같은 비용 최적화 전략을 활용할 수 있습니다.