Stub과 단위 테스트 (Mockito or 직접 구현)

Stub과 단위 테스트 (Mockito or 직접 구현)

단위 테스트(Unit Test)는 ①각각 독립된 하나의 기능을 테스트하면서 ②언제나 같은 결과를 기대할 수 있어야 하고, ③빠르게 결과(성공/실패)를 확인할 수 있어야 하며, ④테스트 스위트 실행 후 결과를 취합할 수 있도록 작성되어야 합니다. 단위 테스트를 작성하다 보면 ②를 만족시키기 위해서 특정 메서드를…

jjwt 사용 방법

JWT 생성 및 검증하기 (jjwt 사용 방법)

이번 글에서는 jjwt(Java Json Web Token)라는 오픈소스 라이브러리를 사용해서 JWT를 생성하고 검증하는 방법을 알아보겠습니다.jjwt 사용 방법을 이해하실 수 있도록 기본적인 JWT 생성 예시와 JWT 검증 예시, 테스트 코드를 작성해 보았습니다. https://jwt.io/libraries 👈여기에서 JWT를 생성하고 검증하기 위해 제공되는 오픈소스 라이브러리들을 찾을…

JWT 구조 이해하기

JWT는 토큰 기반 인증 방식에서 주로 사용되는 토큰입니다. 주로 로그인 된 특정 사용자를 인증하기 위해서 사용됩니다. REST API 서버의 확장성을 높이는 데 JWT 인증 방식이 한 몫을 하고 있습니다. 이번 글에서는 JWT 구조에 대해 알아보겠습니다. JWT란? JWT는 Json Web Token의…

높은 응집도 낮은 결합도

유지보수와 결합/응집의 관계 (OOP)

코드의 유지보수성에 대해서 이야기할 때 꼭 나오는 단어가 있습니다. 바로 응집도와 결합도 입니다. 유지 보수는 소프트웨어 생명 주기의 가장 큰 부분을 차지합니다. 요구사항에 따라 소프트웨어는 계속해서 변경되기 때문이죠. 우리는 코드의 변경에 유연하게 대처할 수 있는 코드를 작성해야 합니다. 응집도, 결합도의…

멀티테넌시 개념과 적용 방안

멀티테넌시(Multi-tenancy) 개념과 적용 방안

멀티테넌시란? 멀티 테넌시(Multi-tenancy)는 소프트웨어 애플리케이션의 단일 인스턴스가 여러 고객(테넌트, tenant)에게 서비스를 제공할 수 있게 설계된 아키텍처입니다. 오로지 소프트웨어에 의해서 테넌트가 분리됩니다. 주로 SaaS 클라우드 서비스를 설계할 때 멀티테넌시 아키텍처를 고려합니다. 테넌트를 영어 사전에서 검색해보면 세입자, 임차인이라는 뜻이 검색됩니다. 즉, 우리가…

스프링 부트 로깅레벨 변경하기

[Spring Boot] 특정 클래스의 로깅 레벨 변경하기

스프링부트를 사용해 웹 애플리케이션을 운영하다 보면 특정 클래스의 로깅 레벨을 변경하고 싶을 때가 있습니다. 스프링부트에서 모든 클래스의 로깅 레벨을 변경하는 방법부터 시작해서 특정 패키지의 클래스들 그리고 특정 클래스 하나의 로깅 레벨을 변경하는 방법까지 알아보겠습니다. 모든 클래스의 로깅 레벨 변경 모든…

나의 필터가 두 번 적용된 이유

[Spring Boot] 나의 필터가 두 번 적용된 이유

OAuth2.0 구글 로그인 기능을 추가하던 중에 스프링 시큐리티(Spring Security)를 사용하여 JWT 인증을 구현하는 과정에서 한 번 적용되어야 할 필터가 두 번 적용되어 당황했던 경험이 있습니다. 이를 통해 알게 된 내용을 공유합니다. 필터 적용 이유 아래는 Spring Security의 설정을 관리하는 클래스입니다….

다형성 예제로 이해하기

다형성 예제로 쉽게 이해하기

객체 지향 프로그래밍의 꽃이라고 할 수 있는 다형성을 예제를 통해 쉽게 알아보겠습니다. 코드의 중복을 줄이고, 변경에 유연한 코드를 작성하기 위해서는 다형성을 이해할 필요가 있습니다. 다른 사람이 작성한 코드를 이해하거나 스프링과 같은 프레임워크를 이해하기 위해서도 반드시 알고 있어야 하는 필수적인 개념입니다….

클래스 의존성과 연관관계

클래스 의존성과 연관 관계 (다이어그램으로 표현하기)

개발자들은 의존성, 연관 관계에 대한 이야기를 흔하게 들을 수 있습니다. 저는 이 용어에 익숙하지 않을 때 많이 헷갈렸던 것 같습니다. 여러 가지 관계에 대해 다이어그램으로 표현하는 방법이 다양해서 혼란스러웠는데요. 저와 같은 경험을 하시는 분들이 계실 것 같아서 클래스의 다양한 관계들…

복잡한 쿼리를 피하는 방법

복잡한 쿼리를 피하는 방법

여러분은 다른 사람이 작성한 복잡한 쿼리를 분석하느라 고생한 경험이 있으신가요? 저는 암호라고 해도 될 정도로 복잡한 쿼리를 만나서 매우 당황했던 기억이 있습니다. 하나의 쿼리가 다양한 일을 하고, 심지어 불필요한 작업들을 포함하기도 합니다. 쿼리를 몇 번이고 반복해서 읽으며 정확히 분석하지 않으면…