본문 바로가기

전체 글

(127)
[Spring security] PasswordEncoder 살펴보기 들어가면서 도서 : 스프링 시큐리티 인 액션을 보고 내용을 정리한 글입니다. 자세한 내용은 책을 보는 것을 추천합니다. 이번 내용은 스프링 시큐리티의 암호화를 담당하는 모듈을 다루었다. PasswordEncoder 인터페이스 비밀번호는 민감한 정보이다. 외부에 노출이 된다면 중요한 정보를 탈취당할 수 있기 때문에 단단히 챙겨하는 정보이다. 이런 민감한 정보를 안전하게 보관하기 위해서 암호화를 하는데 스프링 시큐리티에서는 이런 암호화를 처리하는 역할을 인터페이스로 정의하고 있다. 바로 PasswordEncoder이다. 스프링 시큐리티를 적용하고 있다면 이 구현체 빈으로 등록하면 정의된 역할에 맞게 암호화를 적용할 수 있다. PasswordEncoder 구현체 BCryptPasswordEncoder, Arg..
커스텀 스킨 셈플 h2 h3 h4 h5 h6 인용문 test 텍스트 입니다. ul ul ul ul ul ul code ol ol ol ol System.out.println("code block"); test test sample test
Springdoc을 이용해서 Swagger API 만들기 들어가면서 API 문서를 수정하는 것은 좀 귀찮다. API 수정 사항이 있으면 문서를 수정하고 코드도 수정하고 두 번 수정을 해야 하는데 코드의 의도가 자동으로 문서에 반영되면 한 번의 코드 수정으로 문서까지 수정할 수 있다. 이런 수요 때문에 API 자동화 도구들이 생기게 된 것이 아닌가 싶다. 그중에서 Swagger는 사용자 친화적인 예쁜 UI를 가지고 있고 문서에서 직접 API 요청을 만들 수 있어서 매우 유용하다. Spring에서 이 Swagger를 통합해서 사용할 수 있도록 개발된 라이브러리를 이용해서 API를 자동화를 구현해 보자. 장점 예쁜 UI 확장성이 좋다. 문서에서 HTTP 요청 생성 가능 단점 코드가 오염돼서 로직을 파악하기가 힘들다. 자동으로 생성되었지만 개발자의 실수로 문서의 내용..
4장 카프카 상세 개념 설명 들어가면서 카프카 프로듀서와 컨슈머를 똑똑하게 사용하기 위한 팁들과 매커니즘을 공부하고 정리한 글입니다. 책에서 중요하게 생각한 내용을 정리한 내용이고 자세한 내용은 도서를 참고해주세요!! 토픽 운영시 고려사항 1. 적정 파티션 개수 토픽의 파티션의 개수는 성능과 연관이 깊다. 그래서 적절한 파티션의 개수를 설정하는 것이 중요하다. 토픽 생성 시 파티션 개수 고려사항 데이터 처리량 메시지 키 사용 여부 브로커, 컨슈머 영향도 데이터 처리량을 고려한 파티션 개수 파티션의 개수를 정할 때는 데이터의 처리량이 얼마나 많은지에 따라서 결정해야한다. 파티션의 개수가 많을 수록 병렬적으로 처리할 컨슈머를 사용할 수 있기 때문이다. 프로듀서의 처리량이 컨슈머의 처리량과 파티션의 수를 곱한 것 보다 작게 해야 데이터 ..
[백준] B1395 스위치 - 느리게 갱신되는 세그먼트 트리 들어가면서 세그먼트 트리를 연습하면서 문제를 도전했다. 아직 완벽히 내 것으로 만든 알고리즘이 아니라서 사소한 실수를 많이 했다. 문제를 풀면서 내가 한 실수들을 설명하고자 한다. 세그먼트 트리 서그먼트 트리는 데이터의 집합에서 특정 구간의 연산된 결과를 빠르게 구하기 위해서 사용하는 알고리즘 중에 하나이다. 비슷하게 사용되는 알고리즘으로는 누적합 알고리즘이 있다. 두 알고리즘은 목적이 같지만 상황에 따라서 더 효과적인 알고리즘이 있기 때문에 특성을 이해하고 사용하는 것이 좋다. 세그먼트 트리는 연산된 결과를 트리 형태로 미리 저장하는 알고리즘이다. 부모 노드의 값은 자식 노드들의 연산 결과로 구성되어 있다. 보통 이진트리 구조로 세그먼트 트리를 만들어 사용하는 것으로 보인다. 다음은 특정 범위의 값을 ..
Spring Rest docs 와 Swagger 장점만 골라서 사용하기 소개 테스트 문서 자동화 도구를 검색하면 두 가지 옵션이 있는데 하나는 Spring REST docs이고 하나는 Swagger이다. Swagger는 예쁜 UI를 제공하고 제공된 UI를 통해서 request를 날릴 수 있는 좋은 도구이지만 소스 코드에 API 문서 자동화와 관련된 코드를 추가해야 하는 단점이 있고 Spring REST docs는 소스 코드에 API 문서와 관련된 코드가 없이 정갈하게 만들 수 있으며 만들어진 문서는 모두 테스트를 통과해야 작성되는 제약을 가지고 있기 때문에 문서의 신뢰성을 높다는 점이 매력적이다. 그래서 개발자의 취향에 따라서 요구에 따라서 어떤 스택을 선택하는지가 달라지는 것 같은데 어쩌다보니 두 가지를 혼용하여 사용하는 방법이 있다는 것을 알게 되어서 바로 시도해 보았다..
스프링 부트 액추에이터 메트릭 사용하기 측정 단위 Counter : 런타임에서 생성된 과정 수를 측정. Gauge : 영구적으로 생성된 과정 수를 측정. Timer : 과정 생성에 소요된 시간을 측정 DistributionSummary : 과정 평점에 대한 분포 요약 사용방법 사용할 측정 단위의 이름과 설명 그리고 메트릭 저장소를 통해 생성단위를 빈으로 등록한다. 생성된 측정 단위는 측정할 로직에서 사용하여 과정을 측정한다. 등록 예제 @Bean public Counter createCourseCounter(MeterRegistry registry) { return Counter.builder("api.courses.created.count") .description("Total number of courses created") .regist..
3장 카프카 스트림즈 카프카 스트림즈는 토픽에 적재된 데이터를 상태기반 또는 비상태기반으로 변환하여 다른 토픽에 적재하는 라이브러리이다. 장점 카프카에서 공식적으로 지원하여 호환성이 매우 뛰어남 장애 허용 시스템을 가져 장애에 강함 테스크 스트림즈 애플리케이션을 실행하면 생기는 데이터 처리 최소 단위 토폴로지 2개 이상의 노드들과 선으로 이루어진 집합 프로세서 소스 프로세서 : 데이터를 처리하기 위한 노드 스트림 프로세서 : 다른 프로세서가 반환한 데이터를 처리하는 역할을 하는 노드 싱크 프로세서 : 데이터를 특정 카프카 토픽으로 저장하는 역할을 하는 노드 스트림즈 DSL KStream 레코드의 흐름을 표현한 것으로 메시지 키와 메시지 값으로 구성 KTable 유니크한 메시지 키를 기준으로 가장 최신 레코드를 사용한 스트림 ..