Java 56

[Spring] 예제와 함께 보는 다중 데이터 소스, Multiple Data Source(예제: Redis * 2, MariaDB *2)

개요 다양한 데이터를 다루는 경우, 대규모 시스템이나 마이크로 서비스 아키텍처를 사용하는 경우에, 다중 데이터 소스를 적용하는 것을 고려할 수 있고, (관계형 데이터 베이스와 NoSQL 데이터 베이스를 동시에 사용해야 할 필요가 있을 수 있습니다) 다중 데이터 소스를 적용하여 애플리케이션의 성능, 확장성, 유연성 수준을 높일 수 있습니다. 이러한 설정은 데이터 분리, 부하 분산, 백업 및 복구 전략, 그리고 성능 최적화와 같은 여러 가지 이점을 제공합니다. 예컨대, MariaDB 인스턴스 중 하나는 읽기용으로, 다른 하나는 쓰기용으로 사용할 수 있습니다. 또한 각 도메인별로 Redis 인스턴스를 사용하여 확장성과 유연성을 높일 수 있습니다. MariaDB를 읽기용과 쓰기용으로 나누는 것을 통해 부하를 분..

Java 2024.02.23

[SpringBatch] 기본 개념 및 예제(csv 파일)

대규모 데이터에 대해 데이터를 일괄적으로 처리하고,처리 중 발생한 오류를 처리하며,실패한 작업을 원활하게 재시작하는 것은 중요합니다. Spring Batch는 대규모 데이터 처리를 위한 Spring 프레임워크입니다. 일반적으로 대규모 트랜잭션을 통해 데이터를 저장할 때 사용합니다. 트랜잭션을 추적하여 관리하고, 트랜잭션 최적화 및 파티셔닝 기술을 통한 고성능 배치 작업을 통해 작업 재시작 등 대용량 레코드 처리에 필수적인 기능을 제공합니다. Job은 배치 작업을 의미합니다. Job에는 여러 Step이 있습니다. 은행에서 매일 고객의 입금, 출금 내역을 확인한 이후 요약하여 저장하는 Job을 한다면, Step1.내역을 확인하고 Step2.요약하여 Step3.저장하는 단계로 나뉠 것입니다. 더 구체적으로 살..

Java 2024.01.25

[SpringSecurity] SpringSecurity6, SpringBoot3.x.x , JWT(access, refresh) - 2 구현(member, token, auth, config)

[SpringSecurity] SpringSecurity6, SpringBoot3.x.x , JWT(access, refresh) - 2 구현(member, token, auth, config)[2024-06-26 ~ 내용 보완중]member와 token 데이터를 config 기반으로 auth합니다.따라서, 어떤(member, token) 자료형을 사용할 것인지 알아보고,어떻게(config, auth) 사용할 것인지 순차적으로 구현하도록 하겠습니다. 1. member (디렉토리)SpringSecurity의 인터페이스 중 하나인 UserDetails를 구현(implements)하겠습니다.UserDetails를 구현(implements)하는 것은 사용자 인증 정보를 관리하는 데 매우 중요한 단계입니다.Spr..

Java 2024.01.24

[SpringSecurity] SpringSecurity6, SpringBoot3.x.x , JWT(access, refresh) - 1 사전 준비(개요, docker, 초기 설정)

[SpringSecurity] SpringSecurity6, SpringBoot3.x.x , JWT(access, refresh) - 1 사전 준비(개요, docker, 초기 설정)0. 보안웹 서비스를 운영하며 가장 중요한 요소 중 하나는 바로 '보안'입니다.사용자와 서버 간의 안전한 통신은 데이터 유출 방지, 불법 접근 차단 등을 위해 필수적입니다.보안의 핵심에는 '인증 시스템'이 자리 잡고 있습니다.현대의 웹 애플리케이션은 다양한 인증 방식을 사용하지만,그 중에서도 JSON Web Token(JWT)은 그 간편함과 안정성으로 많은 개발자들에게 선택받고 있습니다.0.1 JWTJWT는 정보 전송을 위한 방법 중 하나로,이를 활용하여 STATELESS 방식으로 보안요청을 처리할 수 있습니다.기존 세션 방식..

Java 2024.01.21

[Http Client] RestTemplate에서 RestClient 적용으로 최적화

Http Client의 종류는 HttpURLConnection, Apache HttpClient, RestTemplate, OpenFeign, WebClient, RestClient 등으로 다양합니다.각 HttpClient의 기본 구현에 대해 궁금하다면 아래 게시글을 참조해주세요.[HTTP Client] 개요[HTTP Client] 예제- 2024-06-19 추가프로젝트를 진행하던 중,외부 api와 연결하는 것이 필요하여 Http Client 중 RestTemplate 을 적용했습니다.최적화하지 않은 상태에서 시간을 측정해본 결과,평균적으로 100밀리초가 소요되는 것을 확인했습니다.이를 단축하기 위한 방법을 찾던 중,RestTemplate의 소요 시간을 단축할 수 있는 Http Client인 WebCli..

Java 2024.01.19

[Swagger] 테스트 코드, Swagger 등 개발 시 우선순위 몇 가지

프로젝트를 진행할 때, 몇가지 사항들을 우선순위로 두기로 했습니다. 테스트 코드 작성하기, Swagger 및 Logger, REST API 형식 최대한 지키기 작업량이 늘 수록 테스트 코드의 중요성이 커집니다.JUnit을 사용하여 메서드 별로 코드를 살펴볼 수 있기 때문에,문제가 되는 코드를 손쉽게 발견할 수 있습니다. Logger 또한 테스트 코드의 중요성과 마찬가지로 코드의 흐름을 살펴볼 수 있기 때문에 중요합니다. 호출된 메서드와 매개변수를 명시하고, 그에 따른 결과를 출력하도록 했습니다.이를 통해 메서드 실행에 따른 객체의 변화를 추적할 수 있습니다.  public Optional findById(Long id) { Optional findMembers = memberReposi..

Java 2024.01.17

[JSP] JSP Fragment (프래그먼트)

웹 페이지를 만들다보면 네비게이션 바, 푸터, 헤더 등 중복되는 부분이 생길 수 있습니다. JSP Fragment 구현을 통해, 다른 JSP에서 이를 추가하여 코드를 간소화할 수 있습니다. 패키지 구성 Fragment를 모아놓을 패키지를 만들고, Fragment로 사용할 JSP Fragment 파일을 생성합니다. 확장자명은 jspf 입니다. .jspf 파일 생성 taglib 및 bootstrap을 사용한다면, header.jspf와 footrt.jspf를 다음과 같이 구성할 수 있습니다. 만약 Navigation bar를 사용한다면 navigation.jspf 파일을 아래와 같이 생성할 수 있습니다. ride Home Todos Logout jspf 참조 앞서 생성한 jspf 파일을 참조합니다. welc..

Java 2024.01.01

[Spring MVC] 아키텍처 모델 종류; Dispatcher Servlet, Model 1, Model 2, Front Controller

아키텍처 모델 종류; Dispatcher Servlet, Model 1, Model 2, Front Controller웹 동작 방식브라우저는 HTTP 요청을 전송하고 서버는 그 요청을 처리해서 HTTP 응답을 다시 전송합니다.1. Browser sends a request브라우저는 애플리케이션에 요청을 전송합니다.(그 요청을 HttpRequest라고 합니다)2. Server handles the request.서버 또는 애플리케이션은 요청을 받으면 그 요청을 처리합니다.3. Server returns the responseSpring Boot 웹 애플리케이션이 요청을 받고,그 요청을 처리하고,응답을 다시 브라우저에 전송합니다.(응답은 보통 HTML 형식이며, 그걸 HttpResponse라고 합니다)아키텍..

Java 2023.12.26

[SpringBoot] 로깅

로깅에는 다양한 수준이 있으며, 상황에 따라 적절한 로깅 수준을 출력하도록 해야 합니다. 로깅 수준 loggin level error 오류와 예외만 출력 warn error보다 조금 더 많은 정보를 출력 info (warning 포함) info 수준에서 로깅된 모든 정보를 출력 debug info 보다 더 많은 정보를 출력 trace 로그에 있는 모든 정보를 출력 (개발을 진행중이라면 debug수준, 프로덕션 환경은 info수준으로 할 수 있습니다) Spring Boot는 SLF4j를 사용하는 Logback을 기본 로깅 프레임워크로 사용하고 있습니다. Spring Boot의 로깅 설정은 간편합니다. spring-boot-starter-web의존성에는 spring-boot-starter-logging이 포..

Java 2023.12.26

[JPA, Hibernate] 시작하기 -3, JPA 와 Hibernate

JPA는 Jakarta Persistence API 입니다. maven에서 종속성을 살펴보면 org.springframework.boot spring-boot-starter-data-jpa 3.2.1 spring-boot-starter-data-jpa Starter for using Spring Data JPA with Hibernate https://spring.io/projects/spring-boot ... jpa와 hiberbate 모두 spring-boot-starter-data-jpa를 통해 들어오는 것을 확인할 수 있습니다. import 된 것을 확인해보면 import jakarta.persistence.* jakarta 를 확인할 수 있습니다. JPA vs Hibernate JPA API,..

Java 2023.12.23
728x90
반응형