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 ..
Going In 안녕하세요~! 오늘은 k8s 에서 pod 를 운영할 때 기밀정보를 어떻게 관리하면 좋고, 기밀정보에 대한 관리의 책임은 어떤 component 가 갖고 있는지 한번 알아보도록 할게요 서비스되고 있는 서비스 서버들이 많아질 수록 보안에 대한 중요성 또한 점점 커지고 있는데요. 과연 정말 보안적으로 안전한가? 에 대한 의문점까지 같이 해결해보도록 해보죠 ㅎㅎ Secret What is secret? A Secret is an object that contains a small amount of sensitive data such as a password, a token, or a key. k8s 에서의 secret 은 password, token, key 와 같이 소량의 기밀정보를 포함하고 ..
들어가며 그 동안 우리는 Kotlin coroutine 을 동작하는 구성 요소들(dispatcher, scope) 에 대해 배워왔는데요 coroutine 을 실제 적용하기 위해서는 근본적으로 suspend 함수가 어떻게 동작 하는지에 대해 알아야 합니다. suspend 함수란 무엇이고, 어떻게 동작하게 될까요? 차근차근 알아봅시다. Suspend 자 그럼, Suspend 함수는 도대체 무엇일까요? What is suspend function? Suspend 함수는 한줄로 요약하면 중단가능한 함수 입니다. 중단가능한 함수는 함수가 가동하면서 언제든지 다른 요인에 의해 중단이 가능하다 라는 것을 의미합니다. 위 그림 예시를 보면, 빨간색 Box 의 function 이 특정 Thread 에서 일을 처리하다가,..
Introduce 안녕하세요~! 오늘은 서버 개발자들에게는 필수덕목 중의 하나인 성능 테스트에 대해 알아보려고 합니다 아무래도 실제 현업에서 일을 하다 보면, 많은 트래픽을 대비하여 내가 만든 Application server 에 대하여 성능이 어느정도 나오는지 판단하기가 어려워 이를 검증하기 위해 성능 테스트를 진행하게 되는데요 오늘은 Spring boot 기반의 application server 를 간단하게 만들어보고 성능 테스트해보는 시간을 가지고자 합니다. Why Performance Test? 먼저 왜 할까? 에 대한 이야기인데요. 성능 테스트를 하는 이유는 크게 여러 가지가 있습니다. 1. 한 Application server 당 최대 몇 개의 요청을 동시에 처리할 수 있는지 측정하여 많은 트..
들어가며 안녕하세요! java21 LTS version 이 신규 출시됨에 따라 많이 관심을 받고 있는 Virtual thread 에 대해 이야기해보고자 하는데요 Virtual thread 는 기존에 동작하는 Platform thread 에서 동작하며, I/O blocking 발생시 중단(suspend) 지점을 stack 으로 옮겨, I/O block 되는 시간동안 다른 일들을 더 수행할 수 있게 지원하는 경량화 쓰레드라고 할 수 있습니다. 따라서 java 진영에서는 기존에 thread-per-request style 를 갖춘 application server 에서 I/O blocking 으로 인해 아무것도 하는일이 없는데도 task 를 처리할 수 없는 상황들로 인해 병목이 되는 부분들을 해결할 수 있어 ..