전체 글
-
[OpenSearch] Spring - Kotlin 기반의 OpenSearch Client 구현개발/그 외 2023. 11. 3. 23:13
1. 개요 ElasticSearch 에 비해 AWS OpenSearch는 JAVA API Client 문서가 불친절한 느낌이다. 이것 저것 해보면서 겪었던 시행 착오들을 기록하고, SpringBoot - Kotlin 기반으로 AWS OpenSearch Instance에 접근하고 색인/검색 요청을 하는 JAVA API Client 설정 및 구현 방법을 정리한다. 2. Dependency dependencies { ... implementation("org.opensearch.client:opensearch-rest-client:2.11.0") implementation("org.opensearch.client:opensearch-java:2.7.0") implementation("jakarta.json:j..
-
[Spring] RestDocs로 API 문서화를 간단히 해보자개발/SPRING 2023. 6. 18. 21:58
1. build.gradle.kts 설정 추가해야 할 부분만 표시해놓았습니다~ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { ... id("com.epages.restdocs-api-spec") version "0.16.0" ... } group = "com.test" version = "0.0.1-SNAPSHOT" java { sourceCompatibility = JavaVersion.VERSION_17 } repositories { mavenCentral() } dependencies { ... testImplementation("com.epages:restdocs-api-spec-mockmvc:0.16.2") } openapi3..
-
동대문 임장 내용 정리 (feat. 전농동, 답십리, 장안동)부동산공부/임장 2023. 5. 29. 22:52
2023-05-29 12시 ~ 15시 (조금 흐렸다가, 쨍쨍해진 날씨) 돌아다닌 단지는 아래 지도에 표시된 전농동, 답십리 일대와 장안동은 현대홈타운 1차 아파트만 방문했다. 목록 전농SK1차 전농우성 전농래미안엘파인 답십리대림 동답한신 답십리동아 답십리두산1단지 답십리파크자이 답십리청솔우성 장안현대홈타운1차 단지 목록 1. 전농SK1차 단지 평형 가격대 교통 인프라 전농SK1차 1,830세대 2000-07-06 24A 24B 33A 33B 42 6.1 ~ 6.3억 2023-04, 24A평형 기준 전세가율 52~54% 청량리역 도보 30분 답십리역 도보 28분 단지 앞 학원, 마트 등 많은 상권 존재 주차하기 편리해보임 단지는 깨끗하지만 내부 엘리베이터나 현관문 등 컨디션은 좋지 않은듯.. 상가에 이것저..
-
[Spring] DI를 쉽게 하는 방법 (Feat. @RequiredArgsConstructor)개발/SPRING 2023. 2. 26. 14:44
1. 개요 Spring DI 방법은 대표적으로 아래의 세 가지를 이용한다. 생성자 주입 Field 주입 Setter 주입 보통은 @Autowired를 이용한 Field 주입을 많이 사용하는데, 생성자 주입을 권장한다. 순환참조 이슈 Bean을 Immutable 하게 주입 가능 등 장점이 많다. 2. 기본적인 생성자 주입 방법 @RestController @RequestMapping("") public class TestController { private final ProjectService projectService; private final CatalogService catalogService; private final MailService mailService; public TestControlle..
-
[Spring] Intellij Community로 Multi Module Project 생성하기개발/SPRING 2023. 2. 26. 13:55
1. 개요 저는 Intellij Community를 사용하고 있는데, 제가 못하는건지 원래 안되는건지, Springboot-Java 프로젝트를 생성하는게 잘 안됐었습니다. 그래서 Springboot Initializer로 Project 들을 생성하고, 그 이후 root-project에 모듈들을 등록함으로써 Multi Module Project를 구성했습니다. 2. Project 구성 User라는 root-project와, 그 아래 admin/client/core/internal 4개의 Submodule을 구성했습니다. user (root-project) admin client core internal 3. Root Project 생성 Spring initializer로 root project(user) ..
-
[Spring Webflux] 웹플럭스에 대한 간단 정리개발/SPRING 2023. 2. 5. 22:31
Spring MVC와 Spring Webflux Spring MVC는 Blocking / 동기방식으로 동작한다. 요청이 발생할 경우, 스레드풀 내 스레드 하나를 점유해 요청을 처리한다. Spring Webflux는 Non-Blocking / 비동기방식으로 동작한다. 요청이 발생할 경우, 이벤트 루프가 돌아서 해당 이벤트를 처리하는 핸들러에게 처리를 위임하고, 처리가 완료되면 callback 메소드 등을 통해 응답을 반환한다. Spring Webflux를 사용하는 이유 Spring MVC에 비해 적은 스레드를 이용하여 동시성을 핸들링한다. 즉 서버 자원을 낭비하지 않고 효율적으로 동작하는 것을 목적으로 사용한다. 보통 Spring MVC 의 Tomcat 서버에서는 스레드 수가 Default 200개이다. ..
-
[Spring Batch] Spring Batch에 대하여개발/SPRING 2023. 1. 29. 02:32
Spring Batch란? 대용량 일괄처리의 편의를 위해 설계된 가볍고 포괄적인 배치 프레임워크 Spring Scheduler와는 별개의 개념이다. Batch는 보통 Jenkins나 Spring Scheduler에 의해 Trigger 된다. 왜 쓸까? (내 생각..) A라는 한 서버가 있고 이 서버에는 주기적으로 데이터를 처리해야하는 일련의 작업이 있다. A서버의 해당 작업은 Spring Scheduler에 의해 해당 로직이 수행된다. 그러면 A서버는 데이터를 주기적으로 처리하는 일 뿐만아니라 본래 수행해야하는 요청/응답까지 수행했을 때 리소스가 부족하거나 하진 않을까? 이 작업을 Spring Batch로 구현한다면 => 별도의 배치서버로 구현하고 해당 서버는 Scheduler에 의해 실행이 된다. 즉 ..
-
어떤 캐싱을 도입할까? feat. 로컬캐시, Redis, 웹캐시개발/Infra 2023. 1. 7. 18:23
캐시란? 복잡한 연산이나 시간이 오래 걸리는 연산을 미리 수행한 후, 그 결과 값을 저장하여 필요시 빠르게 가져와 사용할 수 있게 하는 것 캐시의 종류 로컬캐시 Redis DB내부 캐시 웹캐시 CDN 등 종류별 특징 로컬캐시: 서버의 리소스(Memory, Disk) 내 결과값을 저장한다. (Caffeine cache, EHcache) 장점 타 서버간 통신비용이 발생하지 않는다. 서버 인스턴스 메모리에 저장하기 때문에 가져오는데 속도가 빠르다. 단점 서버가 여러대로 클러스터링 되어있는 경우, 동기화가 되지 않는다. 캐시 데이터가 커질수록 서버 메모리가 부족해 지며 이에 따라 애플리케이션 성능이 저하 될 수 있다. Redis: 데이터 영속성을 지원하는 In-memory 저장소 (스냅샷 기능을 통해 Disk에..