![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/WuJA4/btr7hQ44GwK/l4KK1ji83jqyNGxs8CkktK/img.png)
이벤트(Event)는 매우 유용하지만 상당히 간과되는 기능 중 하나입니다. 작년에 아마존 CTO는 이벤트 드리븐 아키텍처로 가야 한다고 기조 연설을 하기도 했는데, 이번에는 스프링 프레임워크에서 이벤트(Event)를 사용하는 방법에 대해 알아보겠습니다. 1. 스프링에서 이벤트 사용법 및 주의사항[ 스프링에서 이벤트의 발행과 구독 ]스프링은 이벤트를 발행하고 구독하는 기능을 제공하고 있는데, 해당 기능은 아래와 같은 기본적인 가이드를 따라야 한다.스프링 부트 1.3(엄밀히는 스프링 4.2) 이전 버전이라면 이벤트 클래스가 ApplicationEvent를 상속해야 함이벤트 발행을 위해서는 ApplicationEventPublisher를 주입받아 사용해야 함이벤트 구독을 위해서는 ApplicationLi..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bidyhJ/btsbV5Wzsk3/6lhqx3yF5YYJbm38RavuZK/img.png)
이번에 다룬 내용은 토비님과의 스터디에서 시작하여 토비님의 강의와 영한님의 강의 및 직접 학습하며 배운 내용들을 기반으로 작성되었습니다. 추가할 내용 있으면 공유 부탁드리겠습니다! 감사합니다:) 1. 스프링 부트(SpringBoot)의 탄생 배경, 컨테이너리스(Containerless) 웹 애플리케이션 아키텍처 [ 기존의 스프링 배포 방식 ] 스프링 부트가 없었던 환경에서는 배포를 하려면 다음의 번거로운 작업을 거쳐야 했다. 톰캣 같은 웹 애플리케이션 서버(WAS) 설치 애플리케이션 코드를 WAR로 빌드 빌드한 WAR 파일을 WAS로 옮기고(배포) WAS 실행 이러한 작업은 톰캣과 같은 WAS를 서버에 직접 설치해야 하므로 상당히 번거로울 뿐만 아니라 개발 환경 설정과 배포 과정도 복잡하는 등 많은 단점..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b6ge93/btrVUiLdkXB/2nwKfhHezNXTMvXd4Kd8xK/img.png)
아래의 내용은 일론 머스크가 직원들에게 보내준 메일의 내용을 번역한 것입니다. 모든 부분에서 굉장히 공감이 많이 갔고, 이미 번역본이 많지만 개인적으로 소장 + 혹시 모르는 분들에게 공유하기 위해 작성하였습니다. 1. 일론 머스크의 생산성을 위한 법칙들 큰 규모의 미팅은 피하라 잦은 회의 역시 피하라 가치를 느끼지 못하는 회의는 멈춰라 뜻이 통하지 않는 단어는 사용하지 마라(줄임말, 전문 용어 등) 동료들과 직접 소통하라 상식적으로 일하라 [ 큰 규모의 미팅은 피하라 ] 과도한 미팅은 큰 기업들에게 엄청난 해악이며, 거의 항상 시간이 지남에 따라 악화된다. 모든 참여자들에게 가치를 제공한다는 확신이 서지 않는다면 모든 대규모 회의를 제거하라. 만약 필요하다면 가능한 짧게 유지하라. [ 잦은 회의 역시 피..
아래의 내용은 Nginx 설정을 정리한 부분입니다. 관련 코드는 깃허브에 올려두었고, 가능한 모든 부분에 주석을 남겨두었으니, 상황에 맞게 수정해서 사용하시면 됩니다. 1. Nginx 예시/샘플 설정 공유 [ Nginx 설정 파일들 ] 실무에서 사용되는 Nginx 설정은 꽤나 복잡한데, 이를 아래와 같이 분리하였습니다. mime.types: Nginx 서버에서 처리할 MIME 타입 모음 upstream.conf: upstream(서버 그룹)을 모아둔 설정 파일 header.conf: 요청을 다른 서버로 프록시할 때, 전달해주는 헤더 설정 파일 ssl.conf: SSL과 관련된 설정 파일, SSL 인증서 파일을 경로로 참조함 ssl-server.conf: SSL 요청(443 포트)로 들어오는 요청과 관련된..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cfSdwe/btr8H15OJSk/dr8sSsvVGso0i2GnGLobpK/img.png)
이번 포스팅은 문제가 발생하였을 때, 어떻게 장애를 인지하고, 원인을 찾고, 조치 및 대응을 하였는지에 대한 흐름을 기록하기 위해 작성하게 되었습니다. 에러 자체는 대응하기 어려웠던 문제는 아니지만, 문제 상황에서 어떻게 대처하는지 궁금하신 분들께 도움이 되었으면 좋겠습니다. 1. The last packet successfully received from the server was 12,345,678 milliseconds ago 에러 대응하기 [ 문제 상황 인지하기 ] 현재 사내에서는 APM 도구인 핀포인트와 로그 수집 도구인 넬로 등을 활용하여 문제 상황을 인지하고 파악하고 있다. 에러 알람이 와서 확인해보니, 다음과 같은 에러가 발생하고 있었다. org.springframework.dao.Reco..