일단 해보고, 아니면 뭐

실패했어도 배웠으면 실패가 아냐.

무한한 개발세계 여행기

전체 글 38

RestTemplate로 알아보는 Spring Template Callback Pattern

오늘도 열심히 인프런 강의를 듣고 있었다. 스프링 강의 고급 편을 듣다 보면 여러 가지 디자인 패턴에 대해서 알게 되는데, 오늘은 템플릿 메서드 패턴부터 시작해서 프록시 패턴까지 공부를 하게 되었다. 강의를 듣던 중 템플릿 콜백 패턴이라는 것을 듣게 되었는데 따로 GOF 패턴은 아니고 스프링 내에서 자주 사용되는 패턴이라 스프링 안에서만 이렇게 부른다고 한다. 김영한님 강의에서는 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 콜백(callback)이라고 하며 프로그래밍에서 콜백(callback) 또는 콜애프터 함수(call-after function)는 다른 코드의 인수로서 넘겨주는 실행 가능한 코드이고 콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 실행할 수도 있고, 아니면 나중에 실행할 수..

Programing/Spring 2022.07.17

Java ThreadLocal 파헤치기

요즘에 나는 인프런 강의를 즐겨 듣고 있다. 오늘은 스프링 핵심 원리 - 고급편 강의를 들었는데 강의 내용이 'ThreadLocal'를 이용하여 동시성 이슈를 해결하는 거였다. ThreadLocal은 자바를 공부하던 시절부터 자주 들어왔어서 기능 자체가 낯설지는 않았다. 쓰레드 별로 본인의 특별한 저장공간? 을 만들어서 사용하는 기능인데, 어떻게 쓰고, 무슨 일을 하는지는 알지만 'ThreadLocal이 어떻게 이런 기술을 구현했는지'는 따로 알아본 적이 없는 거 같다! 그래서 나는 이번 기회에 ThreadLocal 클래스를 분석해서 어떻게 쓰레드간 동시성 이슈를 해결했는지 정리해보고자 한다! (동시성 이슈는 서버 개발을 하다 보면 무조건 겪게 되는 거 같다. 이번 기회에 원리와 구현방식을 공부하면 많은..

Programing/Java 2022.07.16

Elastic Search는 Thread Pool 관리를 어떻게 할까?

어느 회사에서든 비슷하겠지만 내가 다녔던 회사는 운영 서버를 패치하는 날이면 모든 팀원들이 각각의 서비스들을 빌드하고 배포한 후에 운영에 이상이 없는지 전체적인 테스트를 거치게 된다. (모든 개발자가 세상에서 제일 예민한 시간) 나도 마찬가지로 내가 담당하고 있는 서버를 빌드 배포한 후에 로그와 함께 예기치 못한 Exception 이 나지는 않는지, 새로 추가된 기능들이 정상적으로 동작하는지 등의 점검을 진행했다. 로그를 계속적으로 모니터링 하고 있는데, 사용자에게 표출되지 않는 내부 스케줄러 로직에서 에러가 계속적으로 나고 있는걸 확인할 수 있었고, Elastic Search관련 로직에서 'HTTP/1.1 429 Too Many Requests'과 같은 에러 로그가 출력되고 있었다. 무슨 로그였을까? ..