본문 바로가기

Web/웹 상식

(26)
[Spring] Spring 6.0, Spring Boot 3.0으로 마이그레이션 중 발생 가능 이슈 Spring Boot 2.x -> Spring Boot 3.0 버전으로 마이그레이션 중 발생했던 이슈들과 그에 대한 저의 해결 방법을 정리합니다. 여러 라이브러리들이 매우 빠르게 Spring 버전에 맞게 업데이트 중이니 글 작성 이후 시점에는 다른 해결방법이 나올 수 있으니 참고 부탁드립니다. 발생 이슈 ○ No qualifying bean of type 'org.springframework.cloud.openfeign.FeignContext' available 참고 : https://github.com/spring-cloud/spring-cloud-openfeign/issues/803 발생 이유 : Spring Cloud OpenFeign의 구 버전은 호환되지 않는 부분이 있음 해결 방법 : 4.0 이..
[Web] 헥사고날 아키텍처 알아보기 각종 블로그와 문서들을 보고 정리한 내용입니다. 정확한 정보가 아닐 수 있습니다. 유의 바랍니다. Hexagonal Architecture이 뭘까? 포트와 어댑터 아키텍처는 헥사고날 아키텍처로 더 잘 알려져 있는 것 같습니다. 어떠한 아키텍처이길래 포트와 어댑터로 불리는 걸까요? 포트와 어댑터 아키텍처 구조를 간단하게 그려보았습니다. 위와 같은 구조로 구성하는 것이 포트와 어댑터 아키텍처이고 중심 부분이 헥사 모양으로 구성되어서 헥사고날로 불리고 있습니다. 엔티티를 중심으로 외부로는 포트를 통해서 노출되어 있고 각 포트에 어댑터들이 붙어서 작동하는 구조입니다. 주황색으로 분리해 둔 것은 아래의 코드에서 패키지 구조를 표현하기 위해 추가한 경계입니다. (코드로 바로가기) 목표 이 아키텍처의 목표는 인터페이..
[Spring] Spring 6.0 과 Spring Boot 3.0에는 뭐가 달라질까 Spring 5.x 버전, Spring Boot 2.x 버전이 얼마 전에 나왔던 것 같은데 벌써 메이저 버전이 또 올라간다는 소식이 들렸습니다. 이미 수개월 전에 나왔던 소식이지만 제가 좀 늦는 편이라 이제야 보게 되어서 이렇게 정리합니다. Spring 6.0, Boot 3.0의 현재 출시 상황 Spring 6.0은 위와 같이 2021년 12월에 M1 버전이 나왔다는 뉴스가 떴었습니다. 그 후 2022년 7월 즉, 현재 시점에 RC1이 뜨는 것으로 되어 있지만 Spring Blog Release 에는 7월 14일에 M5 버전이 나왔습니다. 그래서 RC1 버전은 2022년 8월중에 나오지 않을까 싶습니다. Boot의 상황은 어떨까요? Spring Boot는 기반 소스인 Spring Framework의 개발..
[Spring Cloud] Feign에서 메서드 별로 Hystrix 설정 분리하기 시작하는 이유 앞선 게시글에서 Feign에서 CircuitBreaker 역할로 Hystrix를 사용해보았고 편리하게 application.yml에 설정을 추가하여 메서드 별로 적용해보았습니다. 하지만 이걸로는 yml 파일이 계속 지저분해지고 분리해야 하는 메서드들이 많아질수록 관리가 적용이 불편해질 것 같았습니다. 그래서 간단하게 Custom Annotation 형식으로 적용하는 예제를 만들어보려 합니다. 개요 Feign Client에서 Hystrix를 이용한 Fallback 설정을 메서드 별로 설정하기 위해 Hystrix Configuration을 Custom Annotation형태로 등록하도록 함 예제 Github https://github.com/MarrRang/feign-hystrix-study/..
[Spring Cloud] Feign에서 Hystrix 편하게 사용해보기 Hystrix는? Spring Cloud Hystrix는 일종의 누전차단기(Circuit Breaker) 역할을 하는 오픈소스입니다. 일정 기준 이상의 비정상적인 응답에 대해 미리 구성해둔 Fallback 로직을 수행하는 등의 작업을 해주며 치명적인 오류를 방지하는 역할입니다. Feign이란? 기존의 글로 대체하겠습니다. ㅎㅎ https://marrrang.tistory.com/81 [Spring Cloud] Feign에 대해서 Feign이란 MSA환경에서는 각 서비스 간의 호출이 기존의 단일 시스템일 때보다 증가하게 됩니다. 이러한 상환에서 Feign은 API 간의 호출을 편하게 해 주기 위해서 만들어졌습니다. 기존에는 HttpClient marrrang.tistory.com Feign에서 Hystri..
배포 전략에 대해서 웹 개발 혹은 어떤 개발을 하더라도 서버가 있고 그곳에 나의 애플리케이션을 구동시킨다면 배포라는 것을 피할 수 없습니다. 그리고 배포의 방식의 차이는 잠깐의 서비스 중단을 만들 수도 있고 배포 시간이 길어지는 리소스적인 측면과도 관계가 있습니다. 이에 맞춰서 개발자들은 여러가지 배포 전략을 구상했습니다. 서비스의 멈춤 없이 무중단 배포를 진행하기 위해서 혹은 배포 후 오류가 났을 때 관리하기 위해서 같이 여러 이유에서 말이죠. 아래에서 가장 많이 사용하는 배포 전략들에 대해 간단히 알아보겠습니다. 여러 가지 배포 전략 Rolling Update Deployment (롤링 배포) Blue Green Deployment (블루-그린 배포) Canary Deployment (카나리 배포) Rolling Upd..
[Spring] @InitBinder에 대해서 최근에 Spring 관련해서 보안 이슈가 하나 있었습니다. JDK 9 버전 이상의 모든 Spring Core에서 원격 코드 실행이 가능한 0-Day Exploit의 취약점이 알려졌습니다. 그리고 패치 이전에 공격코드가 이미 알려진 상태였습니다. https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/ Spring4Shell: Security Analysis of the latest Java RCE '0-day' vulnerabilities in Spring | LunaSec We've been taking a look at the new zero-day exploit, dubbed Spring4Shell, supposedly discovered in S..
[Kubernetes] Kubernetes tls Secret 생성하기 Kubernetes에 TLS secret을 추가해야 할 일이 있어서 정리해놓으면 편하겠다 싶어서 정리하게 됐습니다. Openssl을 이용해서 Private Key, Public Key 생성 Private Key를 이용한 CSR(Certificate Signing Request 생성) CRT 인증서 만들기 CRT파일을 PEM파일로 변환 Kubernetes에 secret 생성 1. Openssl을 이용해서 Private Key, Public Key 생성 Private Key 생성 명령어 openssl genrsa -out [파일명] [bit길이] 예시) openssl genrsa -out test.key 2048 Public Key 생성 명령어 openssl rsa -in [privateKey 파일명] -p..
[Spring Cloud] Feign에 대해서 Feign이란 MSA환경에서는 각 서비스 간의 호출이 기존의 단일 시스템일 때보다 증가하게 됩니다. 이러한 상환에서 Feign은 API 간의 호출을 편하게 해 주기 위해서 만들어졌습니다. 기존에는 HttpClient의 설정을 Java에서 설정해주고 주입받아서 사용하는 방식을 해야 했습니다. 이 부분을 간편하게 바꿔주는 것이라고 생각하면 될 것 같습니다. 예시 코드 1. @EnableFeignClients 추가 @SpringBootApplication @EnableFeignClients public class Application { public static void main(String ...args) { SpringApplication.run(Application.class, args); } } @En..
URI와 URL의 차이 최근 들어 저의 눈에 자주 띄는 용어 중에 URL과 URI가 있습니다. 보통 웹서버 호출을 위해 서버 URL을 코드에 사용하게 되죠. 근데 여러 API를 사용하던 중에 분명 보내는 데이터는 내가 아는 URL인데 URI라고 파라미터명이 적혀 있는 경우가 있습니다. 처음에는 비슷한 의미니 대충 넘어갔는데 이번에 한번 알아보고 정리해보았습니다. URI (Uniform Resource Identifier) Uniform : 일정한 규칙을 따르는, 일정한, 균일한, 고른, 같은 형태의 Resource : 자료, 자원 Identifier : 식별자 위의 영어 단어의 뜻으로 보자면 URI = "일정한 규칙을 따르는 자료 식별자"라고 할 수 있겠네요. Identifier의 경우에는 우리가 흔히 아는 ID의 약자이기도 ..