이번에는 흔히 얘기하는 POJO 프로그래밍과 Spring 프레임워크의 관계에 대해 알아보도록 하겠습니다. 아래의 내용들 중에는 토비의 스프링에서 참고한 부분이 많이 있습니다. 1. EJB와 POJO 프로그래밍 [ POJO의 등장 ] EJB(Enterprise Java Bean)란 엔터프라이즈 개발을 단순화하기 위해 Sun 사에서 만들어낸 Java 스펙이다. 스프링이 등장하기 이전에는 EJB가 자바 엔터프라이즈 애플리케이션 개발 시장을 독점하고 있었다. 하지만 EJB에는 치명적인 단점이 있었는데, 바로 코드들이 EJB 기술에 지나치게 종속되어야 한다는 것이다. 아래의 코드는 EJB 기반으로 작성된 것으로, 특정 서비스 계층에 EJB라는 기술이 마구 침투하는 모습을 확인할 수 있다. import 선언문부터 ..
최근에 있었던 사내 엔지니어링 데이에서 발표를 하였는데, 상당히 편리하지만 많은 분들이 모르시는 OpenFeign을 준비하였습니다. 그리고 발표하면서 준비했던 내용을 블로그 포스팅에서도 적어두었습니다. 아래의 내용은 Spring Cloud OpenFeign 공식 문서를 기반으로 개인적인 경험을 더해 작성한 내용입니다. 1. OpenFeign 타임아웃(Timeout), 재시도(Retry), 로깅(Logging) 등 설정하기 OpenFeign의 설정은 yml과 Java config 모두로 할 수 있다. 만약 yml과 Java config 모두 존재한다면 YML의 정보가 Java config를 덮어씌우며 우선순위를 가진다. 하지만 이러한 우선순위 설정은 바꿔줄 수 있으며, 심지어 Feign Client 별로 ..
최근에 있었던 사내 엔지니어링 데이에서 발표를 하였는데, 상당히 편리하지만 많은 분들이 모르시는 OpenFeign을 준비하였습니다. 그리고 발표하면서 준비했던 내용을 블로그 포스팅에서도 적어두었습니다. 아래의 내용은 Spring Cloud OpenFeign 공식 문서를 기반으로 개인적인 경험을 더해 작성한 내용입니다. 1. OpenFeign이란? Open Feign 소개 및 역사 [ OpenFeign이란? ] Open Feign은 Netflix에 의해 처음 만들어진 Declarative(선언적인) HTTP Client 도구로써, 외부 API 호출을 쉽게할 수 있도록 도와준다. 여기서 “선언적인” 이란 어노테이션 사용을 의미하는데, Open Feign은 인터페이스에 어노테이션들만 붙여주면 구현이 된다. 이..
아래의 내용은 김영한님의 디비 접근 기술 2편 강의와 토비의 스프링 등을 바탕으로 정리한 내용입니다. 1. 트랜잭션의 시작과 종료 및 전파 속성(Transaction Propagation) [ 트랜잭션의 시작과 종료 ] 트랜잭션은 시작 지점과 끝나는 지점이 존재한다. 시작하는 방법은 1가지이지만 끝나는 방법은 2가지이다. 트랜잭션이 끝나는 방법에는 모든 작업을 확정짓는 커밋(commit)과 모든 작업을 무효화하는 롤백(rollback)이 있다. 트랜잭션의 시작 트랜잭션은 하나의 Connection을 가져와 사용하다가 닫는 사이에서 일어난다. 트랜잭션의 시작과 종료는 Connection 객체를 통해 이뤄지기 때문이다. JDBC의 기본 설정은 DB 작업을 수행한 직후에 바로 커밋을 하는 자동 커밋 옵션이 활..
이번에는 멀티 쓰레드 환경에서 요청 쓰레드 별로 식별가능한 로그를 남기는 방법에 대해 알아보도록 하겠습니다. 실무에서 유용하게 사용될 수 있으니 참고하시면 좋을 것 같습니다. 1. 로그가 뒤섞이는 문제 상황 소개 및 해결 방법(MDC) [ 로그가 뒤섞이는 문제 상황 소개 ] 서비스를 운영하다 보면 로그를 통해 문의 대응 및 모니터링 등을 진행하게 된다. 그런데 문제는 멀티 쓰레드 환경에서 여러 동시에 요청이 처리되기 때문에 동일한 요청에 대한 로그가 연속적으로 쌓이는 것이 아니라, 순서없이 쌓인다는 것이다. 예를 들어 사용자 추가를 위한 요청이 동시 다발적으로 와서 다음과 같이 로그가 남았다고 하자. 아래의 로그를 보면 1개의 요청에 대한 로그가 쭉 남지 않고, 뒤섞임을 확인할 수 있다. 위의 로그를 요..