들어가며안녕하세요 ㅎㅎ 다들 spring 기반의 application 을 운영하게 되는 일들이 많은데요. 오늘은 client 에서 요청하는 값들에 대해 검증하고 싶을 때 어떻게 검증하는지와 내부 동작과정에 대해 한번 알아보겠습니다 client 에서 요청하는 데이터들은 정말 다양하고 위변조 되는 데이터들이 많을 수 밖에 없어validation 을 하는 것은 선택이 아닌 필수 라는 것을 항상 인지하셨으면 합니다. 글에서 설명드릴 spring 버젼은 spring boot 3.x 이후, spring 6.x 버젼 이후의 방식임을 인지하셨으면 합니다.버젼간의 디테일한 동작 방식은 차이가 있을 수 있습니다. Spring boot validation일반적으로는 spring boot 에서 관련된 의존성들을 묶어서 관리하..
전체 글
주로 개발에 대한 이야기들 Spring Kotlin k8s DB들어가며MSA 가 보편화되고 복잡한 비즈니스를 해쳐나가기 위하여 다양한 도메인 서버를 운영하게 되는데요.도메인 서버가 많아지면 많아질수록 Network 통신은 그만큼 많아지게 됩니다. 그에 따라 Network 관련된 예외들을 경험해볼 수 있는데요. 하지만 Network 에러를 분석하고 다양한 상황을 파악하기에는 정말 쉽지 않죠.그래서 보통은 Idempotency(멱등성) 를 지원하게 하는 API 를 제공하는 방향으로 설계를 하는데요.멱등성을 도입하지 못한 레거시 코드나, 정황상 멱등성 설계가 어려운 상황에 처한 분들도 있을거에요. 이럴 때는 어쩔 수 없이 분석을 해서 헤쳐나가야 하는데요. java, kotlin 진영에서 발생하는 Network 에러 유형에 대해 간단하게 공부해볼까 합니다 ㅎㅎ 오늘 소개해..
들어가며안녕하세요~ 대부분의 프로젝트에서는 multi module 을 고려하여 구성하시는 경우들이 많은데요.multi module 로 나누어 각 모듈의 역할을 분리하고, 재사용성을 증진시키기 위해 multi module 을 활용하고 계시더라구요 그런데 multi module 로 나누게 되면, 가장 큰 문제점으로 다가오는 것이 바로 build 설정들이 중복되서 관리되는 것이 참 아쉬운 부분입니다.이러한 아쉬운 점을 해결하기 위해 gradle 에서는 buildSrc 혹은 build-logic 이라는 모듈을 기반으로 중복되는 build 설정들을 하나로 일원화시킬 수 있게 제공하는데요. 한번 알아보도록 해보겠습니다~!Multi Project Build basic전체적인 gradle 의 overview 는 위와 ..
In coming저번에 저희는 Observability 와 관련된 기본 개념들을 학습하였는데요.간단히 요약을 해드리면Observability 는 오류가 왜 발생했는지 이해하는 것을 목표로 하고 있고, system 의 내부 구조를 모르는 사람마저 근본 원인을 찾을 수 있게 하도록 관측(instrumentation) 하는 것을 의미합니다. Observability 를 구성하는 가장 중요시되는 요소는 아래와 같습니다.MetricTraceLog따라서 application 을 운영한다면, 위에 언급된 3가지 요소 data 를 생산할 수 있는 기반을 만들고, observability 를 위한 데이터 저장소로 보내는 것이 중요하죠.https://huisam.tistory.com/entry/observability ..
Background안녕하세요~ 오늘은 Observability 라는 주제로 이야기를 나누어 볼까 합니다. 흔히들 Monitoring 이라는 키워드는 많이 들어보았을텐데요. 많은 사람들이 Monitoring 시스템을 구축하는 이유는 내가 관리하는 시스템의 상태를 실시간으로 확인하기 위함입니다.Monitoringis tooling or a technical solution that allows teams to watch and understand the state of their systems. Monitoring is based on gathering predefined sets of metrics or logs.따라서 Monitoring 이야 말로 예전부터 시스템을 관리하기 위한 요소로 필수적인 요소로 ..
들어가며안녕하세요~! 오늘은 Junit 에서 테스트를 선별할 수 있는 기능에 대해 알아보도록 할게요.특정 테스트들을 그룹핑하여 선별적으로 가동하기 위하여 자료를 알아보던 도중에 Junit Tag 라는 것을 알게 되었는데요어떻게 하면 적용할 수 있을지 예제코드와 함께 알아볼게요 Junit Tag예제에 사용되는 버젼은 Junit5 버젼을 예제로 합니다. Junit Tag 는 class 혹은 method 단위로 지정하여, test 에게 일종의 태그를 붙여주는 역할을 합니다. 바로 예시와 함께 가보도록 할게요.import org.assertj.core.api.WithAssertionsimport org.junit.jupiter.api.Tagimport org.junit.jupiter.api.Tagsimport ..