본문 바로가기

전체 글114

Unleash 로컬에서 동작시켜보기 튜토리얼 2 Unleash 로컬에서 동작시켜보기 튜토리얼 1외부 클라이언트 서버를 교체할 때, 혹시 모를 상황에 대비해 롤백 해야하는 경우, 서버는 어떤 롤백 시나리오를 준비할 수 있을까요? 상황은 여기서 출발했습니다. 오픈 소스 6161990src.tistory.com  이어서 진행해보겠습니다. 먼저 Unleash 의 라이프 사이클에 대해서 서치해보았습니다. 대략 이렇습니다.   Initial Phase (초기 단계) 는 플래그가 생성되었지만, 아직 어떤 환경에서도 호출되지 않은 상태입니다. 이 설명대로라면 저는 아직 테스트 하지 않았으므로 초기 단계에 머물러있는게 맞습니다.  Pre-Live (프리라이브) 는 플래그가 비프로덕션 환경에서 사용되고 있는 상태입니다. develop 환경을 건너뛰고 저는 바로 prod.. 2024. 12. 3.
Unleash 로컬에서 동작시켜보기 튜토리얼 1 외부 클라이언트 서버를 교체할 때, 혹시 모를 상황에 대비해 롤백 해야하는 경우, 서버는 어떤 롤백 시나리오를 준비할 수 있을까요? 상황은 여기서 출발했습니다. 오픈 소스 기능 플래그 관리 툴 Unleash 를 사용해보았습니다. 기능 플래그는 애플리케이션에서 특정 기능을 제어하거나 활성화/비활성화할 수 있는 방법을 제공하며, 지속적 배포(CD) 및 점진적 릴리즈에 유용합니다. 오픈소스 기반이기 때문에 무료이고, 다양한 기본 전략이 있고 커스텀하게 전략을 세울 수도 있습니다. 사용자 세그먼트를 이용해 만 14세 이상의 유저에게는 A 기능을 만 20세 유저에게는 B 기능을 이용하도록 경우에 컨트롤할 수 있습니다. A/B 테스트를 간단하게 해볼 수 있습니다. 시간 기반 릴리즈를 통해 특정 시간 동안만 기능을 .. 2024. 12. 3.
Redis 로컬 테스트 하는 두 가지 방법 : testContainers Redis 구현 후 local 에서 실행시키는 여러가지 방법이 있습니다. 하나씩 실험삼아 기록해두려고합니다. 첫번째는 아주 쉽고 베이직한 접근방법입니다. application.yaml 세팅없이 실행시 localRedisConfig 로 세팅할 수 있습니다.  다음은 그냥 redis 서버 포트를 yaml 에 세팅해둘 수 있는 방법입니다.   둘 중 어느 방법을 선택하던지 아래 테스트 코드를 통해 결과를 확인해볼 수 있습니다.   메인 코드는 아래를 참조해보실 수 있습니다.   org.springframework.boot.autoconfigure.data.redis 의 RedisAutoConfiguration 을 디버깅을 해보았습니다.   RedisTemplate 생성시, yaml 에 설정해놓은대로 127.0.. 2024. 12. 1.
join() 이용해보려다가 실패한 사연 쓰레드는 상태를 가진다. 쓰레드가 가질 수 있는 상태는 다음과 같다.    위 상태들을 쭉 보다가 TIMED_WAITING 와 WAITING 은 어떻게 다른지 궁금해졌다. 언제 전이되는지, 어떤 상태에서 전이될 수 있는지를 직접 실험해보았다. 그리고 팀에서 관리하는 서비스에서 적용할 만한 사례를 찾아보았다. 천천히 스텝 바이 스텝으로 나아가기로했다. TIMED_WAITING 과 WAITING 상태인 스레드를 직접 눈으로 확인해보는 것이 시작이었다.   다음 코드에서 TIMED_WAITING 으로 전이될 수 있는 포인트가 있다. Thread.sleep(3000) 이다. sleep() 은 스레드를 잠시 멈추게 한다.실행을 일시 중단했다가 얼마의 시간이 지난 후 다시 재실행한다. 이 과정에서 스레드의 상태는.. 2024. 11. 28.
메인 스레드, 커스텀 스레드, 데몬 스레드 테스트 찍먹일기 : multiThread & concurrency 2 Thread main 은 언제 만들어진걸까? 프로세스가 실행되려면 최소한 하나의 스레드는 존재해야한다고 이전 포스팅에서 설명했다. 왜냐면 정말 일을 doing 하는 건 스레드이기 때문이다. 자바에서는 실행시점에 main 스레드가 만들어지도록 설계되었고 main 스레드가 main() 메서드를 실행한다. 이걸 주관하는 건 JVM이다.그럼 또 다른 스레드 Thread-0 은 어디서 튀어나온 애일까? TwiceThread 같은 사용자 정의 스레드를 생성하고 start() 메서드를 호출하면, JVM은 새로운 스레드를 생성한다. 그리고 스레드 생성 차례에 맞게 Thread-0, Thread-1 같은 순서로 이름붙인다. 그래서 Thread-0 이 응애하고 출력된 것.사진을 보면 start() 를 호출했는데 내부적으로.. 2024. 10. 9.
<도둑맞은 집중력> 읽다가 멀티 스레드 공부 하게 된 이야기 : multiThread & concurrency 1 얼마 전 을 읽어보았다. 흥미로웠던 부분은 '인간의 뇌는 멀티태스킹을 할 수 없다'는 주장이다. 인간의 뇌는 기본적으로 한 번에 하나의 작업에만 집중할 수 있도록 설계되어 있다. 그런데 우리가 여러 작업을 번갈아가며 수행하다 보면, '컨텍스트 스위칭'이 자주 발생한다. 이로 인해 두뇌의 효율이 떨어지고, 점점 더 둔해지는 것처럼 느껴진다. 뇌에서 발생하는 이 컨텍스트 스위칭을 '인지적 전환'이라고 부르는데, 이 과정에는 상당한 비용이 따른다. 그 이유는 전두엽의 용량. 멀티태스킹을 할 때, 한정된 전두엽의 자원이 여러 작업에 분산되면서 각 작업에 필요한 집중력이 점차 감소하기 때문이다. 나는 멀티 테스킹이 안되는 인간이라고 생각했는데 사실은 그게 자연스러운 일이라는 것에 심심한 위로를 받았다.인간은 충.. 2024. 10. 6.