본문 바로가기

자기계발

AWS 해커톤 (AWS JAM)

소개: AWS JAM에 참여하게 된 동기와 기대

AWS JAM에 참여하게 된 계기는 AWS 서비스에 대한 실질적인 이해와 문제 해결 능력을 높이고 싶었기 때문입니다. 특히 클라우드 환경에서의 네트워크 및 보안 구성을 실습하며 실제 업무에 도움이 될 수 있는 인사이트를 얻고 싶었습니다. AWS JAM은 실전에서의 기술 활용을 중요시한다는 점에서 저에게 꼭 필요한 경험이 될 것 같았고, 이를 통해 AWS에 대한 자신감을 더욱 쌓고자 하는 기대감도 컸습니다.

AWS JAM의 주제와 진행 방식

제가 참여한 AWS JAM의 주제는 **‘네트워크 보안 및 계층화’**로, VPC와 네트워크 ACL, 보안 그룹을 비롯한 다양한 AWS 서비스들을 통한 네트워크 격리 및 보안 강화가 주요 내용이었습니다. JAM의 진행 방식은 각 참가자가 일정 시간 내에 주어진 문제를 해결하고 점수를 획득하는 방식으로, 모든 참가자가 실시간으로 문제를 해결하며 점수를 확인할 수 있고, 1등 상품도 있었기에 실시간 경쟁의 몰입감이 높았습니다.

주요 도전 과제

  1. Lambda 함수의 타임아웃 문제 해결
    Lambda 함수가 타임아웃 오류를 발생시키는 문제였으며, 이를 해결하기 위해 VPC 내에서의 구성과 SQS와의 상호작용을 위한 엔드포인트 설정을 재구성해야 했습니다.
  2. VPC 내 각 서브넷 간 네트워크 ACL 구성
    플랫 VPC 구조를 세그먼트화된 VPC로 전환하여, 각 계층이 다른 계층과 통신할 수 있도록 하는 보안 규칙을 설정해야 했습니다.
  3. 주문 관련 규정 설정을 위한 인바운드/아웃바운드 트래픽 규칙 구성
    네트워크 ACL을 통해 계층별로 허용과 거부 규칙을 세밀하게 구성해 데이터베이스, 백엔드, 프론트엔드 간의 정확한 통신이 가능하도록 설정하는 작업이 포함되었습니다.

각 과제 접근 방식

Lambda 타임아웃 문제 접근

Lambda 함수 타임아웃 문제는 네트워크 구성을 확인하며 접근했습니다. Lambda와 SQS 간의 네트워크 연결이 필요했기에, VPC 엔드포인트와 보안 그룹 설정을 점검하고 수정했습니다. 이 과정에서 보안 그룹의 인바운드 규칙에 Lambda의 보안 그룹 ID를 추가함으로써 문제가 해결되었습니다.

VPC 내 서브넷 네트워크 ACL 구성

세그먼트화된 VPC로 전환하는 문제에서는 각 서브넷을 위한 NACL을 별도로 생성하고 서브넷별로 인바운드와 아웃바운드 규칙을 분리했습니다. 특히 상태 저장이 되지 않는 NACL 특성을 고려해 인바운드와 아웃바운드 규칙을 명확히 구성하는 점이 중요했습니다.

주문 관련 규정 설정을 위한 접근 방식

주문 관련 규정 설정 문제에서는 각 계층별로 허용과 거부 규칙을 세부적으로 설정해야 했습니다. 처음에는 규칙 설정 순서를 실수하여 의도대로 작동하지 않는 경우가 발생했으나, 규칙 번호에 따라 Allow와 Deny 규칙의 순서를 조정한 후에야 정상 작동을 확인할 수 있었습니다.

사용한 AWS 서비스와 선택 이유

  1. Lambda: 이벤트 기반의 서버리스 환경에서 애플리케이션 로직을 처리할 수 있어 효율적이었습니다.
  2. Amazon SQS: 비동기 작업 큐를 관리하는 데 유용했고, Lambda와 결합해 데이터 처리를 간소화했습니다.
  3. VPC와 NACL: 네트워크를 격리하고 세그먼트화하여 계층별로 보안을 강화할 수 있었습니다.
  4. IAM: 최소 권한 원칙을 준수하여 역할 및 정책을 설정했습니다.

협업과 역할 분담

저희 팀은 문제의 난이도에 따라 역할을 분배하여, 각자 다른 문제를 선택해서 개별적으로 진행을 하였고,

각자 맡은 부분을 공유하고 문제 해결 과정에서 막히는 부분이 있으면 실시간으로 피드백을 주고받아 해결하였습니다.

어려웠던 점과 문제 해결 과정

어려움

처음엔 이런 과제진행이 생소하여 적응하는데 1시간이 넘게 걸렸습니다만,

한 문제를 풀고 난 이후 자신감이 생겨 다음 문제에 적극적으로 임했더니 해결해나갈 수 있었습니다.

그 후 마지막 200점 짜리 고득점 문제에서 네트워크 ACL과 보안 그룹 설정 과정에서 상태 저장이 되지 않는 NACL의 특성을 충분히 반영하지 못해 문제가 발생했습니다. 초기에는 Allow 규칙만 설정하면 된다고 생각했으나, 응답 트래픽을 위한 아웃바운드 규칙도 필요함을 깨닫고 수정했습니다.

실패한 접근 방식

Lambda의 타임아웃 문제 해결 시, 보안 그룹과 IAM 권한을 잘못 구성하여 Lambda 함수가 SQS에 접근할 수 없었던 적이 있었습니다. 이를 해결하기 위해 보안 그룹의 인바운드 및 아웃바운드 규칙을 재검토하고, IAM 역할에 올바른 SQS 접근 권한을 부여하여 문제를 해결했습니다.

마무리

새롭게 배운 점

이번 JAM에서 NACL의 상태 비저장 특성과, VPC 엔드포인트 및 보안 그룹 간의 트래픽 제어에 대해 깊이 배울 수 있었습니다. Lambda와 SQS 간의 연결을 위한 IAM 권한 설정의 중요성도 다시 한번 깨달았습니다.

얻은 인사이트

네트워크 격리와 보안 설정이 얼마나 중요한지, 또 설정 시 세부 규칙이 얼마나 큰 영향을 미치는지 알게 되었습니다. 특히 NACL과 보안 그룹을 사용한 계층적 보안 강화는 실제 운영 환경에서도 큰 도움이 될 기술임을 느꼈습니다.

앞으로의 계획

AWS 서비스를 활용해 보다 복잡한 네트워크 시나리오를 설정하고, 더 정교한 보안 구성을 실습해보고 싶습니다.

AWS JAM 추천 여부

AWS JAM은 실제 AWS 환경에서의 문제 해결 능력을 극대화할 수 있는 실습 기회로, 적극 추천합니다. 실전 경험을 통해 AWS 서비스의 구성을 이해하고, 협업을 통해 문제 해결에 대한 다양한 접근 방식을 배울 수 있어 큰 도움이 되었습니다.