본문 바로가기

학습 기록 (Learning Logs)/Today I Learned

(32)
MDC import org.slf4j.MDC;쓰레드 로그를 남기는데 있어서 해결방법이라고 들었다. 좀 조사를 해보려고한다.  MDCMDC는 애플리케이션에서 요청별 또는 트랜잭션별로 로그를 관리하고 디버깅을 용이하게 하는 데 매우 유용합니다. 특히, 로그 추적성을 강화하고 로깅 출력에 추가 정보를 포함해야 하는 경우 활용하면 효과적입니다. 그러나 멀티스레드나 분산 환경에서는 MDC의 한계를 보완할 추가적인 설계가 필요합니다. import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.slf4j.MDC;@Override public HttpAAResponse doService(HttpAARequest request) { String sessionId = ..
RabbitMQ, Kafka Today I Learn ✍🏼  이벤트 브로커, 메시지 브로커 두개 로 나뉜다 메시지 브로커미들웨어 아키텍쳐에서 사용됨 미들웨어?서비스하는 애플리케이션들을 연결하는 소프트웨어ex) 메시징 플랫폼, 인증 플랫폼, 데이터베이스   메시지 브로커데이터를 소비하면 데이터 삭제ex) redis, rabbitmq 이벤트 브로커데이터를 삭제하지 않음인덱스로 개별 관리한다이벤트를 보존함ex) kafka, Aws 키네시스 이벤트이벤트를 데이터처럼 저장한다장애가 일어난 지점에서 재처리 가능함많은 데이터를 효과적으로 병렬적으러 처리가능 이벤트 브로커 -> 이벤트 기반 micri service 아키텍쳐      RabbitMQ고성능 메시지 브로커메시지 전달, 라우팅에 초점advanced message queue protoc..
Map 함수 compute(K key, BiFunction remappingFunction)--> 키 존재, 키 안존재 둘 다 --> 수정, 삭제, 추가 키가 존재하는 경우:리매핑 함수가 null을 반환하면: 그 키는 맵에서 삭제리매핑 함수가 다른 값을 반환하면: 그 값으로 기존의 값을 업데이트합니다. 키가 존재하지 않는 경우:리매핑 함수가 null을 반환하면: 그 키는 맵에 추가되지 않습니다. 리매핑 함수가 다른 값을 반환하면: 그 값으로 맵에 새로 추가됩니다. import java.util.HashMap;import java.util.Map;public class ComputeExample { public static void main(String[] args) { Map map = new Ha..
Redis, Spring Today I Learn ✍🏼  오늘 하루 가장 인상 깊었던 배움에는 뭐가 있었지?- redis-stack 인상적- JPA 좋아 보임- 최근에 공부한 싱글톤, bean 복습으로 인해 이해력이 더 올라갔다 redis를 spring에서 간단히 테스트 코드를 짜는데JPA로 하니까 dao도 안 만들어도 되고, 꽤나 코드 양이 줄어들고 더 쉬워보였다.그 배움까지 다가가는데 어떤 어려움이 있었지?동영상을 보는거라 지루했다.오랫만에 도커를 띄어야해서 컴퓨터 내의 brew도 업데이트 하는데, 오류가 났다.영상과 제공된 도커 compose 파일 내용이 달라서 둘다 시도 해봤다.처음 영상에서 나온대로 했더니 포트에 요청해도 docker stack이 띄어지지 않았다.그 어려움을 해결하기 위한 나의 시도들은 무엇이 있었지?..
Spring Security? OAuth2 ? Today I Learn ✍🏼  오늘 하루 가장 인상 깊었던 배움에는 뭐가 있었지? 그 배움까지 다가가는데 어떤 어려움이 있었지? 그 어려움을 해결하기 위한 나의 시도들은 무엇이 있었지? 그 과정에서 나는 무엇을 깨달았고, 어떤 감정/생각이 들었었지? 이 상태에서 이후 더 나은 내가 되려면 무엇을 보완하지?  Spring Security? OAuth2 ? Spring Security애플리케이션의 보안 전반을 관리하는 강력한 프레임워크OAuth2를 포함한 다양한 인증 및 권한 부여 방법을 지원OAuth2특정한 인증 및 권한 부여 시나리오에서 사용되는 표준 프로토콜   Spring Security목적: Spring Security는 애플리케이션 전반에 걸친 보안 설정을 담당합니다. 인증(authentica..
MSA, Spring Cloud Today I Learn ✍🏼  오늘 하루 가장 인상 깊었던 배움에는 뭐가 있었지?MSA를 자주 들었었다. 실제로 공부한 것은 이번이 처음이다. MONO 방식은 한 서버에 여러 서비스가 들어가 있다. 그래서 하나를 수정하더라도 전체를 수정, 배포해야 한다.내가 다녔던 회사들도 MSA 아키텍쳐로 만들어져 있다. 서비스 디스커버리:Eureka에 각각의 서비스 서버를 등록, 관리 해준다. Health Check도 가능하다. 클라이언트 사이드 로드밸런싱:FeignClient(REST API 호출), Ribbon(로드밸런싱)은 Eureka에 등록된 서버의 이름으로 호출하는 것을 깨닫고는 과거에 업무에서 이렇게 적용했으면 좋았을 걸! 깨달음이 있었다. 서킷 브레이커:Resilience4j 는 장애를 처리해준다. ..
DI, IoC Today I Learn ✍🏼  오늘 하루 가장 인상 깊었던 배움에는 뭐가 있었지?강의를 들으면서 bean 등록 이야기가 나왔다. 면접 스터디에서도 정확하게 DI에 대해 설명하지 못했다. 무한루프 단톡방에서 IoC에 등록된 빈에 대한 질문이 있었다. 그러나 나는 알지 못했기에 이번에 정리를 했다.  그 배움까지 다가가는데 어떤 어려움이 있었지?지금까지 스프링 강의는 엄청나게 많이 들었다. DI, IoC도 여러번 공부했다. 그러나 오늘이 유튜브 5분 요약으로 인해 정말 쉽게 이해하게 되었다.  그 어려움을 해결하기 위한 나의 시도들은 무엇이 있었지?개발 공부할 때마다 DI, IoC 공부를 했다.  그 과정에서 나는 무엇을 깨달았고, 어떤 감정/생각이 들었었지?개발은 기본을 알아야 한다. 기본을 알면 모든..
패키지 위치에 따라 다른 DB가 자동으로 연결되는 법 src/conf/applicationContext-local-cache.xmlSpring 프레임워크를 사용하는 자바 애플리케이션에서로컬 캐시 설정을 위해 사용된다. Spring의 의존성 주입 기능을 활용하여애플리케이션의 다양한 컴포넌트에 대한 구성정보를 XML 형식으로 제공한다. 설정할 수 있는 것1. 캐시 매니저 정의캐시를 관리하기 위한 컴포넌트를 설정ex) ehCache, Guava Cache, Hazelcast 등 다양한 캐시 구현체를 사용할 수 있다. 2. 캐시 성질 설정이름, 만료시간, 메모리 한계, 캐시에 저장될 객체의 최대 개수 등캐시의 동작 방식을 세부적으로 설정할 수 있다. 3. 캐시 사용을 위한 빈캐시를 사용할 객체들을 Spring bean으로 등록하여의존성 주입을 통해 캐시를 사용할 ..