[Spring Boot] Spring Boot 설정 파일 분리 : submodule
·
Spring
Spring Boot 설정 파일 관리프로젝트를 진행하며 기존에는 google drive 혹은 카카오톡을 통해 설정 파일을 관리했다.하지만, 설정 파일 버전 관리와 수동으로 공유하는 과정에서 어려움과 수고스러움이 있었다.이러한 문제를 해결하기 위해서 spring boot의 설정 파일 관리 방법에 대해서 알아보았다.github secrets vs github submodule설정 파일 저장 방식을 결정하기 위해 github sercrets와 git submodule을 비교했다. 보안 측면에서는 github secrets가 좋은 선택지였지만, 설정 정보의 버전 관리와 공유 측면에서 git submodule을 사용하기로 결정했다 git submodule을 활용한 설정 파일 관리git submodule 기초 개념..
[Spring Boot] 실시간 비동기 작업 처리기 만들기 - 실습
·
Spring/기초 개념
Kafka와 Stomp를 활용한 비동기 작업 처리이전에 Stomp와 Kafka에 대해서 알아보았고, 이번에는 해당 내용을 바탕으로 실시간 작업 처리기를 만들어볼 예정이다.Stomp와 Kafka에 대한 내용은 아래 글에서 확인할 수 있다. https://kym8821.tistory.com/entry/Spring-Boot-%EC%8B%A4%EC%8B%9C%EA%B0%84-%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%9E%91%EC%97%85-%EC%B2%98%EB%A6%AC%EA%B8%B0-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EA%B8%B0%EC%B4%88-%EA%B0%9C%EB%85%90 [Spring Boot] 실시간 비동기 작업 처리기 만들기 - 기초 개념요구사항 분석이번에..
[Spring Boot] 실시간 비동기 작업 처리기 만들기 - 기초 개념
·
Spring/기초 개념
요구사항 분석이번에 실시간으로 사용자 입력을 받아서 이를 AI 서버에 전달하여 실시간으로 사용자에게 응답하는 기능을 개발하게 되었다. 따라서 아래와 같은 요소들을 고려해야할 조건으로 정했다.사용자의 입력 순서에 맞게 출력을 제공해야 한다.여러개의 서버가 존재할 때, 입력에 대한 한 번의 응답만 존재해야 한다.장기적인 연결이 가능해애 하고 데이터가 소실되면 안된다.이러한 상황에서 Kafka와 Stomp를 활용한 실시간 비동기 작업 처리가 적절한 방법이라 생각했다. Stomp 우선 Kafka에 대해서 알아보기 전에 Stomp 먼저 알아본다.Stomp 특징Stomp는 웹소켓 위에서 동작할 수 있는 프레임 기반 메세징 프로토콜로, 아래 특징들이 있다.Stomp는 웹소켓 기반으로 동작하므로 웹소켓 연결이 필요하다..
[Spring Boot] MSA 아키텍처 구축 : API Gateway와 Service Discovery
·
Spring/MSA
API Gateway : Spring Cloud GatewaySpring Cloud Gateway 선택 이유일단 아래와 같은 요구사항을 기반으로 Spring Cloud Gateway를 선택했다.Spring Boot 3 이상에서 동작해야함Spring에서 공식 지원해야함WebSocket와 같은 장기 연결을 지원해야함이러한 상황에서 Spring Boot에서 공식 지원을 중산했고, 장기 연결을 지원하지 않는 Zuul보다는 Spring Cloud Gateway가 적절하다고 판단했다.Spring Cloud Gateway의 기능Spring Cloud Gatway는 Spring Webflux 기반의 API Gateway이다.또한, Webflux 기반이기에 Netty(웹 서버) 기반의 비동기 처리를 지원한다. Sprin..
Spring Boot MSA 아키텍처 구축 : 기초 개념
·
Spring/MSA
이번 게시글에서는 MSA의 전반적인 개념과 구조에 대해서 살펴본다.또한 각각의 컴포넌트가 Spring Boot에서 어떻게 사용될지를 살펴본다.MSA 기초 개념모놀리식 아키텍처하나의 서비스에서 여러개의 프로세스가 동작하는 아키텍처이다.scale up은 자유롭지만, scale out 시 데이터베이스 귀속 문제 등으로 인해 확장이 어렵다.마이크로 서비스 아키텍처 (MSA)여러개의 기능을 각각의 독립적인 컴포넌트로 분리 및 배포하는 아키텍처이다.여러 msa를 모으면 하나의 서비스가 되어야하기에 msa 간 통신이 가능해야 한다. msa의 장점 중 하나는 확장과 업데이트가 쉽다는 것이다.확장 : 개별 컴포넌트를 scale out하기 쉽기에 확장이 쉬움업데이트 : 개별 독립적인 컴포넌트에 대한 테스트 시나리오만 고려..
SpringBoot에서 Mockito로 소셜 로그인 단위 테스트
·
Spring/기초 개념
Mockito를 활용하여 Mock 객체 생성하기단위 테스트는 테스트 대상인 모듈에 대한 독립적인 테스트를 진행한다.따라서 모듈의 의존성에 대한 Mock 객체를 생성 및 주입할 필요가 있다.모킹과 스터빙모킹 : 테스트 대상이 외부 요소와 어떻게 상호작용했는지 확인하는 것주로 외부 메서드가 호출되었는지 검증하기 위해 사용한다스터빙 : 테스트 대상이 외부 요소로부터 어떤 값을 받는지를 정의하는 것주로 외부 메서드를 호출했을 때의 반환값을 정의하기 위해 사용한다Spring Context와 무관한 Mock 객체 생성아래 어노테이션을 활용하면 Spring Context와 무관한 Mock 객체를 생성할 수 있다.어노테이션기능사용처@Mock실제 기능이 없는 가짜 객체 생성1. 외부와 독립적인 테스트를 진행하기 위해 사..
Access Token와 Refresh Token을 활용한 인증과 인가
·
Spring/기초 개념
단일 JWT 토큰을 활용한 로그인의 문제점단일 JWT 토큰을 사용한 로그인 방식은 간편하지만 아래와 같은 문제점이 있었다.토큰이 탈취되었을 때, 계정 해킹에 취약해짐토큰 관리를 사용자가 하므로 토큰이 탈취되어도 할 수 있는 것이 많지 않음이러한 문제를 어느정도 해결하기 위해 access token와 refresh token을 활용한다.Access Token와 Refresh Token일단 각 토큰의 역할부터 알아보도록 하자.Access TokenAccess Token은 사용자 인증 및 인가를 위해 사용하는 토큰이다.Access Token은 짧은 유효기간을 갖도록 설계된다.따라서 탈취자가 운좋게 토큰을 탈취해도 다시 탈취를 시도해야 한다.Refresh TokenRefresh Token은 Access Toke..
Spring Boot에서 테스트코드 작성하기
·
Spring/기초 개념
테스트 코드 작성과 중요성테스트코드의 중요성과 단점테스트 코드 작성의 장점사전 테스트를 통한 소프트웨어 안정성 보장사전 테스트를 통한 빠른 버그 발견테스트 코드를 통해 코드의 동작 방식을 검증할 수 있음코드에 변경사항이 있을 때, 이를 검증할 수 있기에 유지보수에 용이함코드의 동작을 정의하기에 협업에서 발생하는 문제를 줄여테스트 코드 작성의 단점따로 테스트 코드를 작성해야 하므로 개발 시간이 늘어난다.코드가 변경되었을 때 테스트코드도 함께 수정해야하므로 유지보수 시간이 늘어난다.테스트 코드 작성에 과도한 시간을 투자하면, 개발 생산성이 저하될 수 있다.테스트 코드 작성 경험과 도구 학습을 위한 시간을 투자해야 한다.즉, 테스트코드는 코드의 안정성과 버그 방지 등의 장점이 있지만, 추가적인 코드를 작성 및..
Spring Security로 JWT 토큰 인증 방식 구축하기
·
Spring/기초 개념
Spring Security와 JWT 토큰Spring SecuritySpring Security는 인증, 권한 관리, 데이터 보호 등의 사용자 관리 기능을 구현하는데 도움을 주는 프레임워크이다. 자세한 내용은 아래 링크를 통해 확인할 수 있다.https://kym8821.tistory.com/entry/%EC%8B%A4%EC%8A%B5%EC%9D%84-%ED%86%B5%ED%95%B4%EC%84%9C-%EC%95%8C%EC%95%84%EB%B3%B4%EB%8A%94-Spring-Security-%EA%B8%B0%EC%B4%88 실습을 통해서 알아보는 Spring Security 기초Spring Security란Spring Security는 인증, 인가뿐만 아니라 일반적인 공격으로부터 서비스를 보호하기 위..
실습을 통해서 알아보는 Spring Security 기초
·
Spring/기초 개념
Spring Security란Spring Security는 인증, 인가뿐만 아니라 일반적인 공격으로부터 서비스를 보호하기 위해 사용하는 프레임워크이다. Spring Security는 자바 17버전 이상의 런타임 환경을 요구한다.  Spring Security 동작 방식 Spring Security는 아래와 같은 방식으로 동작한다.각 과정을 하나씩 살펴보로독 하자.HTTP 요청을 AuthenticationFilter가 가로챈다. (1)AuthenticationFilter는 인증을 하기 해서 사용자 인증 정보(Authentication 객체)을 생성한다. (2) AuthenticationFilter는 AuthenticationProvider에 인증 책임을 넘기고, 인증 결과에 따른 분기를 수행한다.Authe..