아래의 내용에서는 ELK(Elasticsearch, Logstash, Kibana)에 대해 간단히 살펴보고, 구성 예시를 살펴봅니다. 개인적으로 참고하기 위해 포스팅하는 내용입니다. 1. ELK에 대한 간단한 소개 및 구성 예시 [ ELK 아키텍처 구성 예시 ] [ Filebeat의 역할 ] Filebeat(파일 비트)는 각 서버에 설치되어 로그 파일의 전송을 담당하는 로그 전송 경량화 프로세스이다. 현재 구조에서는 nginx와 tomcat로그가 모두 필요하여 2종류의 로그를 전송하고 있고, 로그의 구분은 필드에 타입을 추가하여 처리한다. 1개의 프로세스를 통해 여러 개의 로그 종류를 전송하는 부분은 Filebeat 설정 쪽에서 자세히 살펴보도록 하자. Filebeat는 크게 로그를 가져올 입력 플러그인..
이번에는 Spring에서 사용되는 ObjectMapper의 동작 방식에 대한 정리해보도록 하겠습니다. 1. ObjectMapper를 이용한 직렬화(Serialize)[ ObjectMapper의 직렬화(Serialize) 동작 방식 ]ObjectMapper는 리플렉션을 활용해서 객체로부터 Json 형태의 문자열을 만들어내는데, 이것을 직렬화(Serialize)라고 한다. 해당 부분은 @ResponseBody나 @RestController 또는 ResponseEntity 등을 사용하는 경우에 처리된다. Spring에서는 기본적으로 jackson 모듈의 ObjectMapper라는 클래스가 직렬화를 처리한다. 그리고 그 과정에서 ObjectMapper의 writeValueAsString이라는 메소드가 사..
HTTP 메소드의 속성으로 안전, 멱등, 캐시가능이 있는데, 이번에는 그 중에서 멱등이 무엇이고 Patch가 멱등하지 않은 이유와 Delete가 멱등한 이유에 대해서 살펴보도록 하겠습니다. 1. HTTP 메소드의 멱등성(Idempotence)이란? [ HTTP 메소드의 멱등성(Idempotence)이란? ] HTTP 메소드의 속성 중에 안전(Safe), 캐시(Cacheable)과 함께 멱등성(Idempotence)이 있다. RFC 7231 스펙 문서에 보면 멱등성이란 “여러 번 동일한 요청을 보냈을 때, 서버에 미치는 의도된 영향이 동일한 경우” 라고 정의되어 있다. 그리고 Safe 요청들(GET, HEAD 등)에 더해 PUT, DELETE가 멱등한 HTTP 메소드라고 나와있다. [ HTTP 메소드의 멱..
벌써 2022년을 마무리하고 돌이켜보는 시간이 되었습니다. 2022년 한 해를 되돌아보면서, 작년의 목표가 잘 지켜졌는지 확인해보고 2023년에 대한 목표를 잡아보고자 합니다. 올해는 개인적으로 빨리 회고를 작성하고 싶다는 생각이 많이 들었습니다. 올 한해 동안 제가 느꼈던 것들을 공유하고, 다른 비슷한 상황에 계신 분들께도 도움이 되었으면 좋겠습니다. 1. 2022년 회고 [ Spring과 Java 더 깊게 공부하기 ] 2022년에는 Spring과 Java를 깊게 공부하고자 하였다. Spring 같은 경우에는 소스코드도 뜯어보고, 김영한님 인강도 전부 듣고, 토비님과 토비의 스프링 책읽기 스터디도 하면서 Spring에 대해 한 단계 스텝업 할 수 있었다. 물론 아직도 모르는 부분이 많고, 볼만한 부분들..
이번에는 흔히 얘기하는 POJO 프로그래밍과 Spring 프레임워크의 관계에 대해 알아보도록 하겠습니다. 아래의 내용들 중에는 토비의 스프링에서 참고한 부분이 많이 있습니다. 1. EJB와 POJO 프로그래밍 [ POJO의 등장 ] EJB(Enterprise Java Bean)란 엔터프라이즈 개발을 단순화하기 위해 Sun 사에서 만들어낸 Java 스펙이다. 스프링이 등장하기 이전에는 EJB가 자바 엔터프라이즈 애플리케이션 개발 시장을 독점하고 있었다. 하지만 EJB에는 치명적인 단점이 있었는데, 바로 코드들이 EJB 기술에 지나치게 종속되어야 한다는 것이다. 아래의 코드는 EJB 기반으로 작성된 것으로, 특정 서비스 계층에 EJB라는 기술이 마구 침투하는 모습을 확인할 수 있다. import 선언문부터 ..