회사 소스코드 application.yml 설정파일을 보면 데이터베이스 접속정보, api키값 등 보안에 민감한 데이터가 있어서 이러한 데이터를 외부에서 직접 주입 할 수 있도록 구성하려고 이것 저것 알아보다가 AWS 서비스중 하나인 Parameter Store 에 대해 알게되었는데 비용도 무료고 괜찮아 보여서 적용해보도록 하였다. Spring Boot 환경에서 AWS Parameter Store를 적용하는 블로그 글들은 많이 봤지만 Spring Boot 2.4 이상 환경에서 적용하려고 했지만 제대로 동작하지는 않았다. 여기를 보면 Spring Cloud 버전과 호환되는 Spring Boot 버전을 확인할 수 있는데 버전을 맞춰도 안되는건 마찬가지 였다. 필자는 Spring Boot 버전이 2.6이어서 호..
최근에 회사에서 AWS CloudWatch Log를 이용하여 애플리케이션에서 발생되는 로그를 볼 수 있게끔 구성하였다. 이번에는 애플리케이션이 처리하는 요청/응답에 대한 데이터를 수집하고 또 수집되는 과정에서 오류가 발생 시 원인을 쉽고 간편하게 파악할 수 있는 AWS X-RAY에 대해 알아보도록 하자. 그리고 CloudWatch에서는 CloudWatch ServiceLens라는 걸 제공해주는데 CloudWatch ServiceLens는 지표, 로그, 경보, 기타 리소스 상태정보를 한 곳에서 관리할 수 있으며 AWS X-RAY와 통합하여 애플리케이션에 대한 전체적인 서비스맵을 제공하여 한눈에 볼 수 있도록 기능을 제공한다. AWS X-RAY를 JAVA 웹 애플리케이션에 적용하기 위해서는 X-RAY SDK..
AWS EC2 인스턴스의 상태가 실행되거나 혹은 서버가 다운되었을 경우 이메일로 알람을 받아보는 기능을 구현하고자 한다. 공식문서를 보면 내용자체가 이해하기 어렵고 옛날자료들이 있다보니 정상적으로 돌아가지 않는부분도 있다. 그래서 이번에 삽질했던 내용으로 정리하고자 한다. 순서대로 정리하니 잘만 따라오면 문제없이 구현할 수 있다. ㅎㅎ AWS EC2 인스턴스 생성 EC2 인스턴스 생성하는 방법은 여기를 보면 상세히 적어두었다. 여기에서 보안그룹 설정 및 키페어로 접근하는 과정도 나오는데 이번에는 그부분은 생략하고 단순히 생성만 해두자. AWS SNS 주제 및 구독 생성 AWS Management Console에 들어가서 SNS이라고 검색후 접속하면 다음과 같은 화면이 나온다. '주제 생성' 버튼을 클릭하..
Spring에서 Controller의 메서드에 예외가 발생되면 @ControllerAdvice가 선언된 클래스가 동작하여 발생된 예외타입에 맞는 메서드가 호출된다. 그리고 그 메서드 내부에는 개발자마다 다르겠지만 e.printStackTrace()를 호출하는 코드가 작성되있는 경우가 있다. 혹은 특정 로직을 try/catch로 감싸서 처리할 경우 catch 블록에도 e.printStackTrace()를 호출하는 코드가 작성되있는 경우가 있다 그러나 e.printStackTrace()는 특히 운영환경에서는 지양해야될 요소이며 이유는 다음과 같다. JAVA의 Reflection을 이용하여 예외를 추적하는 것이라 많은 오버헤드가 발생할 수 있다. 메서드 스택정보를 취합하기 때문에 서버 부하의 원인이기도 하다...
이번글에서는 Spring 애플리케이션에서 발생된 로그를 AWS Cloud Watch로 전송하는 방법에 대해 알아보자. 그전에 Spring 애플리케이션에서 AWS Cloud Watch로 로그를 전송하려면 CloudWatchLogsFullAccess 라는 Role을 가진 IAM 사용자의 액세스 키, 시크릿 키가 존재해야 한다. IAM 사용자를 추가하고 Role을 부여하는 방법은 여기를 참고하자. 프로젝트 환경 JAVA 11 Spring Boot 2.6.2 Maven AWS Log Appender 라이브러리 추가 Maven ca.pjer logback-awslogs-appender 1.6.0 Gradle implementation group: 'ca.pjer', name: 'logback-awslogs-app..