안녕세계
액츄에이터(Actuator) 서비스 운영시에는 서비스에 문제가 없는지 모니터링할 수 있는 metric(지표)을 추가하여 감사(auditing)가 필요합니다. 이처럼 서비스 모니터링에 필요한 metric을 스프링부트 액츄에이터(SpringBoot Actuator)를 사용하면 손 쉽게 확인할 수 있습니다. 그리고 액츄에이터는 마이크로미터(micrometer), 프로메테우스(Prometheus), 그라파나(Grafana)와 같은 모니터링 시스템과 연동할 수 있는 기능도 함께 제공하고 있습니다. 액츄에이터가 제공하는 기능을 사용하기 위해서는 라이브러를 먼저 추가해야합니다. implementation("org.springframework.boot:spring-boot-starter-actuator") 라이브러리를..
EventListener vs TransactionalEventListener 스프링 4.2 이상 버전에서 @EventListener와 @TransactionalEventListener 두 가지로 애플리케이션 이벤트를 수신할 수 있습니다. 두 어노테이션은 리스너 어노테이션이 설정된 메서드 인자의 이벤트 객체를 받아서 처리한다는 공통점이 있지만 약간의 차이 점이 존재합니다. 이번 포스팅에서는 두 어노테이션의 사용 방법과 차이 점을 살펴봅니다. 😊 EventListener 우선, EventListener는 애플리케이션에서 모든 타입의 이벤트를 수신하는 가장 단순한 방법입니다. EventListener는 트랜잭션에 참여하지 않으므로 트랜잭션 관련된 동작이 없으며 동기적으로 실행됩니다. 동기적으로 수행한다는 의..
2023년 1월 29일(일) 글또 8기 OT와 함께 글쓰기 활동이 시작되었습니다.글또에 대해 간략히 소개하고 글또 활동을 본격적으로 시작하기 전 다짐 글을 작성하고자 합니다.글또가 뭔가요?글또란 "글쓰는 또라이가 세상을 바꾼다"의 약자이며, 얼또(Early 또라이 a.k.a. 일찍 일어나는 또라이가 세상을 바꾼다) 커뮤니티의 네이밍을 모티브한 "글쓰는 개발자 모임"입니다. 글또에 대한 더 자세한 소개는 다음을 참고해주세요 😊글또에 참여한 이유는?2017년 부터 개발자로 시작해서 어느덧 6년차 개발자가 되었습니다. 😲그 동안 다양한 분야의 비지니스 도메인 업무를 하면서 다양한 프로그래밍 언어와 기술들을 경험할 수 있었습니다.6년 동안 경험한 도메인과 주로 사용한 프로그래밍 언어비즈니스 도메인: 광고/마..
개발자로 일하기 시작하면서 미뤄두었던 회고를 처음으로 작성합니다.2022년은 그 어느 때보다 바쁜 해였고 제 스스로 변화가 많은 해였기에 기록합니다.1. 이직 우아한형제들로 이직했습니다. 🥳 개발자로서 성장을 위해 교육 과정을 찾아보던 중 NEXTSTEP 우아한테크캠프Pro를 알게 되었고,우아한테크캠프Pro 3기 교육 과정에 합격하여 지난 2021년 11월부터 2021년 말까지 교육을 진행했었습니다. 두 달이라는 짧은 기간 동안 8가지 미션을 회사 일과 병행하며 밤낮없이 미션을 수행했으며,그 덕분에 기간 안에 모든 미션을 수행할 수 있었고 최종적으로 우수 수료생 중 한 명으로 선발되었습니다. 이후 미션을 완료한 수료생에 한하여 우아한형제들 채용 면접을 볼 수 있는 기회가 주어져 면접을 준비하게 되었는데..
안녕하세요. 이번 포스팅에서는 MacOS에 Oracle(오라클)을 설치하는 방법에 대해 알아봅니다. MacOS에서 Oracle DB를 사용하기 위해서 Docker를 이용합니다. 그리고 테스트시 사용할 scott 계정 활성화 방법에 대해서도 설명합니다. Oracle 11g 설치 # 이미지 다운로드 $ docker pull deepdiver/docker-oracle-xe-11g # oracle11g 컨테이너 실행 $ docker run --name oracle11g -d -p 8080:8080 -p 1521:1521 deepdiver/docker-oracle-xe-11g # sqlplus로 oracle11g 컨테이너 접속 $ docker exec -it oracle11g sqlplus Enter user-n..
안녕하세요. 이번 포스팅에서는 웹 애플리케이션을 Docker image로 만들어서 AWS ECR에 업로드 하는 방법에 대해 알아봅니다. 샘플 프로젝트 생성 본 포스팅에서는 https://start.spring.io 를 통해서 프로젝트를 생성합니다. dependencies는 Spring Web과 Lombok(선택)을 추가해주세요. 헬스체크 API 생성 샘플 프로젝트를 열어서 정상 동작하는지 확인합니다. 이후 AWS Fargate에 배포가 정상적으로 되었는지 확인하기 위해 HealthCheck API를 만들어주세요. @RestController @RequestMapping("/health-check") public class HealthCheckController { @GetMapping public Str..
이번 포스팅에서는 MacOS에서 여러 Java 버전을 설치하는 방법을 알아봅니다. Python에 pyenv가 있다면, Java에는 jenv가 있습니다. 본 예제에서는 brew를 사용하여 AdoptOpenJDK와 jenv를 설치합니다. AdoptOpenJDK 설치 예제에서는 Java8과 Java11을 설치하겠습니다. (언제부턴가 brew에 cask 명령어가 사라지고 install의 --cask 옵션으로로 변경되었더군요 ㅎㅎ) $ brew install --cask adoptopenjdk/openjdk/adoptopenjdk8 $ brew install --cask adoptopenjdk/openjdk/adoptopenjdk11 jenv 설치 $ brew install jenv ~/.zshrc에 jenv 설..
안녕하세요. 지난 포스팅에서는 SpringBoot 환경에 MyBatis를 연동해보았습니다. 이번 포스팅에서는 SpringBoot 환경에서 MyBatis를 활용한 API 개발 예제에 대해 알아봅니다. JPA에서는 Entity 클래스를 생성하고, Entity에 대응되는 JpaRepository를 생성해주어야 하는데, MyBatis에서는 Mapper 인터페이스를 생성하고, Mapper 클래스에 대응되는 XML 파일을 만들어야합니다. 본 예제에서는 API 요청을 위한 Controller를 먼저 만들고, Controller에서 필요한 클래스부터 파일을 하나씩 생성해봅니다. 😎 1. Controller 클래스 생성 // kim.junhong.expmybatish2.api.test.controller @RestCon..