본문 바로가기

분류 전체보기

(109)
REDIS 1. Redis란 Redis는 오픈소스로 시스템 메모리를 사용하는 키-값 형태의 데이터 구조 저장소이다. In-Memory 상태에서 데이터를 처리하기 때문에 디스크에 접근하는 데이터베이스보다 빠르게 읽고 쓸 수 있다. 즉, 우리가 흔히 사용하는 관계형 데이터베이스(RDB), 문서형 데이터베이스(NoSQL) 보다 빠르고 가볍게 동작한다. Key-Value 구조이기 때문에 쿼리를 사용할 필요가 없다.(Key에 올 수 있는 자료형은 String, Value는 다양한 타입을 지원) 디스크가 아닌 메모리에서 데이터를 처리하기 때문에 빠른 속도로 처리 가능 String, List, Set, Hash, Sorted set, Stream, Geospatial index, Bitmap, Bitfield 등의 자료구조 지..
메시지 큐 Message Queue 대부분의 마이크로서비스 아키텍처에서는 메시지 큐를 활용한 비동기 패턴을 사용한다. 모놀리식 아키텍처에서 사용자가 증가함에 따라 데이터의 처리량도 많아지게 되면서 애플리케이션의 서비스 단위로 분리하기 시작했다. 그럼 다음과 같은 문제가 발생할 수 있다. 서비스는 분리시켰지만 데이터베이스는 어떻게 하지? 동일한 데이터베이스를 사용하도록 해야 하나? 데이터베이스도 분리한다면 동기화 문제는 어떻게 처리해야 하지? 등등의 문제가 발생한다. 동일한 데이터베이스를 사용할 경우 트랜잭션과 Isolation level에 관한 문제가 발생할 수 있어 결국은 문제가 되기에 결국 분리시켜야 한다. 이때 활용할 수 있는 기술이 Message Queue이다. Message Queue는 분산시스템에서 동기화 문제를 해결하는데 도움..
[DATABASE] 인덱스란? Real MySQL 8.0 책과 유튜브 [쉬운 코드]님의 데이터베이스 강의를 참고하여 작성하였습니다. 1. 인덱스란 데이터베이스의 테이블에 대한 검색 속도를 향상시켜주는 자료구조이다. 데이터베이스에서 검색, 정렬 및 필터링 작업을 빠르게 수행하는데 도움을 주며, 특정 열에 대한 검색을 최적화하는 역할을 한다. 인덱스는 책의 찾아보기(index, 색인)와 같이 내용을 바로 찾을 수 있도록 지원한다. 사전순으로 키워드별로 나열이 되어 있고, 키워드 옆에는 해당 키워드가 담겨있는 책의 페이지를 가리키는 것처럼 데이터베이스의 인덱스 테이블에서도 데이터 칼럼과 실제 메모리 상의 주소 위치를 담고 있다. SELECT * FROM user WHERE id = "mysterlee"; 테이블에서 위의 조건을 만족하는 데..
[Spring Security] 스프링 시큐리티에 대한 흐름 이해 Spring Security는 Java 기반의 애플리케이션에서 보안 인증과 권한 부여를 처리하기 위한 프레임워크이다. 스프링 시큐리티는 다양한 인증 메커니즘을 지원하고, 다양한 방식으로 사용자 인증을 구현할 수 있다. 이번 블로그를 통해 스프링 시큐리티의 동작원리에 대해 이해하고, 대표적인 특징에 대해 알아보려고 한다. 1. 스프링 시큐리티의 구조 1. Http Request 수신 클라이언트로부터 로그인정보와 함께 인증 요청을 하게 되면 AuthenticationFilter에서 인증 및 권한 부여의 목적으로 일련의 필터를 거치게 된다. 로그인이 이미 되어있다면!! 이미 Authentication 객체가 Http Session에 저장되어 있기 때문에 AuthenticationManager의 authenti..
[TIL] 🌱 2023.05.11 - TestContainer 🛹 목표 목표 난이도 달성 여부 패스트 캠퍼스 강의 듣기 中 ✔️ 알고리즘 문제풀이 中 ✔️ 📋 공부 내용 & 기록 스프링의 TestContainers TestContainer 로 멱등성있는 integration test 환경 구축하기 By 박성은 medium.com Testcontainers를 이용한 테스트 환경 구축하기 Testcontainers를 이용해 Production 환경과 동일한 테스트 환경 구축하기 dealicious-inc.github.io 1. TestContainers란 테스트를 위해 Java 언어만으로 docker container를 실행시켜주는 자바 라이브러리 도커를 이용하여 테스트할 때 컨테이너를 직접 관리해야 하는 번거로움을 해결해주며, 운영환경과 유사한 스펙으로 테스트 가능 ..
스프링 FeignClient Spring Web, RestTemplate, Feign은 Http Client의 모듈이다. Http Client는 Http 프로토콜을 사용하여 서버와 통신하기 위해 클라이언트 측에서 사용되는 소프트웨어를 말한다. 서버와 요청과 응답을 주고받으며, 웹 서버의 데이터를 가져오거나, 데이터를 업로드 하거나, REST API 호출을 수행하는 등의 역할을 한다. 오늘은 Http Client의 모듈 중 Netflix에서 개발된 Feign에 대해 정리해보려고 한다. 패스트 캠퍼스 강의를 참고하며 학습하였습니다. 1. FeignClient란 무엇인가? Netflix에서 개발한 Http Client로 현재는 OpenFeign이라는 이름으로 오픈소스로 공개되었다. 이후 스프링 클라우드에서 스프링부트와 함께 사용할 수 있..
[TIL] 🌱 2023.05.09 - spock 🛹 목표 목표 난이도 달성 여부 패스트 캠퍼스 강의 듣기 中 ✔️ 알고리즘 문제풀이 中 ✔️ 📋 공부 내용 & 기록 Spock 프레임워크 class SpockTest extends Specification { def "address 파라미터 값이 null이면, requestAddressSearch 메서드는 null을 리턴한다." () { given: String address = null when: def result = kakaoAddressSearchService.requestAddressSearch(address) then: result == null } } Spock란 Groovy 언어를 이용하여 테스트 코드를 작성할 수 있는 프레임워크이면 JUnit과 비교하여 코드를 더 간결하게 작성 가능 Gr..
[TIL] 🌱 2023.05.03 - Feign Client 🛹 목표 목표 난이도 달성 여부 패스트 캠퍼스 강의 듣기 中 ✔️ 알고리즘 문제풀이 中 ✔️ 📋 공부 내용 & 기록 스프링 FeignClient Spring Web, RestTemplate, Feign은 Http Client의 모듈이다. Http Client는 Http 프로토콜을 사용하여 서버와 통신하기 위해 클라이언트 측에서 사용되는 소프트웨어를 말한다. 서버와 요청과 응답을 주고받으 mysterlee.tistory.com Feign Client의 특징 Connection / Read Timeout : 외부 서버와 통신 시 Connection / Read Timeout 설정을 할 수 있다. Feign Interceptor : 외부로 요청이 나가기 전에 만약 공통적으로 처리해야하는 부분이 있다면 Inte..