본문 바로가기
320x100
728x90

IT 정보66

외부 API호출하는 서버 개발시 주의할 점! [File Descriptor, Too Many Open Files] 오늘은 솔루션을 운영하다가 발생한 문제와 그 해결법을 공유하려고 한다. 일단 전제를 설명하자면 현재 내가 재직 중인 회사는 B2B를 하는 회사고 도메인 특성상 많은 트래픽을 받을 일이 없었다. 그래서 여느떄와 다름없이 비즈니스 로직 개발에 집중을 했고, 늘 같은 개발 -> 테스트 -> 배포 -> 모니터링을 했다. 그런데 내가 개발한 이 솔루션을 한 회사가 사용하기로 했는데, 이 솔루션은 서버에서 외부 API를 호출하는 로직이 포함되어 있다. 그리고, 그 회사는 수많은 회사들과 게약으로 엄청난 트래픽(내 경험 기준에선...)을 가진 업체였다. 업체가 라이브하는 날을 알려줘서 모니터링을 하고 있었는데, 갑자기 서버가 엄청난 수로 오토스케일링 되는 것을 확인했다. 처음에 2대였던 서버는 29대까지 늘었고, 분.. 2023. 12. 14.
AWS]ECS 사용시 로그 비용관련 주의점 ECS를 사용하면서 불필요한 로그를 줄이고 가능하다면 ERROR, WARN로그만 켜놓자. 우리 회사는 ECS Fargate를 굉장히 자주 사용한다. 아무래도 서버리스라는 장점이 있어서 관리의 편의성 때문인데, ECS 서비스를 생성할 때 무의식적으로 로그 설정을 켜놨다. 문제개 생겼을 때 CloudWatch에서 보기 위해서다. 일단 ECS는 TaskDefinition이라는 작업에 정의된 대로 컨테이너가 실행된다. 여기서 작업을 정의할 때, 기본설정으로 대부분을 설정하다 보니 기본적으로 로그 수집 사용에 체크가 되어있었다. 기본으로 로그 수집 사용이 체크되어 있다. 물론 로그 사용은 필요하지만 불필요한 INFO 로그는 안 봐도 된다. 그러다 인프라 관련 비용을 보던 도중, 어느 순간 매일 $10씩 추가적으로.. 2023. 9. 17.
AWS]ECS Fargate X86에서 ARM으로 회사에서 EC2보다는 ECS를 더 사용하기로 했기 때문에 RI 준비를 하면서 기존에 EC2를 ECS로 전환하는 작업을 진행했다. 그중에서도 X86 아키텍처와 ARM 아키텍처 중, 선택지가 있었는데 아무래도 비용이나 성능면에서나 더 좋은 ARM 아키텍처 기반의 환경을 선택하기로 했다. Savings Plan을 적용했을 때의 요금표는 다음과 같다. * 기준 : 서울리전/리눅스/선결제 없음 두 요금 표는 소숫점으로 봐서 별 차이가 안 날 수 있지만 Fargate를 사용하는 vCPU와 RAM의 합산 요금을 기준으로 계산되기 때문에 실질적으로 큰 차이가 난다. ARM이 X86대비 시간당 RAM(GB)은 약 20%, CPU는 19.7% 둘 다 대략 약 20%가 저렴하다. 그렇다면 왜 더 싼걸까? 일단 몇 가지 이유.. 2023. 5. 9.
Spring boot에서 ControllerAdvice를 이용하여 Exception handling하기 코드를 작성하다 보면 코드에서 Exception(이하 오류)이 발생하는 일은 빈번하다. 제일 무서운 NullPointerException부터 NumberFormatException , ClassCastException 등등 많은 종류의 오류가 있다. 이런 오류들 중, Checked Exception으로 컴파일 이전에 코드 작성시에 try catch나 throw 등 에러를 핸들링하도록 강제하는 코드들이 있는 반면 SQL Exception, NullPointer, OutOfMemory 등의 오류들은 런타임에서 발생하기 때문에 개발 단계에서 확인하지 못하고 운영 단계나 사용자의 실 사용시에 발생하기 때문에 이는 곧 소프트웨어의 품질 문제로 이어진다. MVC 패턴을 채택하여 개발한다면 가장 첫 진입점이 되는 컨.. 2023. 3. 21.
300x250
320x100