일단 시작하기 전에 인프라 설계도 부터 보여드리고 시작하겠습니다.
로컬로 빼놓은 젠킨스 -> 비용 절감 효과를 보기위해 로컬로 옮김
EC2-ECS 구조 -> 카프카 컨테이너 분리, 오토 스케일링을 통해 자동으로 컨테이너 수 조절 -> 서버의 부하를 줄임
기존 EC2-ECS 구조입니다. 전에F fargate-ecs 구조에서 EC2-ECS 구조로 변경되었지만 사실 Fargate-ECS와 EC2-ECS 두 구조를 실행하여 어느게 더 효율적일지 비교을 해볼 예정입니다. 일단 처음으로 ECS에 배포를 해봐서 상당히 난항을 겪었습니다. 포멧 도 arm64 기준으로 해야 했지만 linus x86/64로 설정 해놓는 바람에 포멧팅 오류뜨게 되었습니다.
exec /usr/local/openjdk-17/bin/java: exec format error
그래서 dockerfile을 통해 아키택쳐가 일치하게 linus/arm64로 수정후 다시 푸쉬
미리 젠킨스 파이프라인을 구축헤놓아서 ECR 푸쉬는 매우 잘됩니다.
하지만 AWS 서버에서 환경변수를 설정해본적이 없어 많이 애 먹었다는....
docker-compose.yml을 통해 .env를 넘겨 환경변수를 적용할려 했지만 실패
S3를 통해 .env 파일을 추가해 테스크 정의할떄 S3 환경변수 추가해서 적용해볼려 했지만 실패
마지막 남은 방법 AWS secret manager를 통해 환경변수 설정은 성공!
환경변수가 안불러와져서 JWTSECURITY부터 시작해서 여러 값이 없다고 오류가 떴는데 이번에는 스키마 생성이 안되어 테이블 생성이 안되는 문제가 생겼습니다. MYSQL을 사용하기에 이미 인바운드로 3306포트 열어두고 ECS 클러스터에서도 보안 규칙으로 3306포트는 열어둔 상태. 애초에 JPA를 사용해서 테이블을 자동 생성이 되어야 하지만 생성 못하고 있습니다. 해당 문제는 빠르게 해결하도록 하고...
인프라 방향은?
기존에 정했던 목표대로 Fargate-ECS로 밀고 나가야 합니다. 백엔드이지만 devops 비중보다는 기존에 부여된 서버를 통해서 얼마나 효율적으로 다루는게 중요하다고 생각해 Fargate-ECS를 통해 자동으로 관리해줘 기능구현 및 고도화를 시키는 작업에 열중할 예정입니다.
Fargate-ECS -> Kafka 컨테이너 2개 메인 1개 총 3개의 컨테이너 private subnet과 public subnet 구별 + ALB 까지 배포가 완료되는 것으로 목표를 두고 있습니다.
'우리 지금 만나' 카테고리의 다른 글
채팅 시스템 성능 개선-(9)(우리 지금 만나) (0) | 2024.11.17 |
---|---|
1대1 채팅 서비스 구현 계획-(8)(우리 지금 만나) (0) | 2024.11.07 |
소모임 단건 조회에 RedisLimiter를 적용 후 Jmeter 테스트-(6)(우리 지금 만나) (0) | 2024.10.30 |
소모임 다건 목록 Redis 적용 후 Jmeter 테스트 정리-(5)(우리 지금 만나) (0) | 2024.10.30 |
인프라 난항-(4)(우리 지금 만나) (2) | 2024.10.27 |