트래픽이 몰려 짧은 시간에 요청이 거의 동시에 발생하거나 서버가 불안정해져 요청을 처리하는데 시간이 오래 걸리는 경우 동시성 이슈로 데이터 정합성에 문제가 생길 수 있다.위와 같이 상품의 재고를 조회하고 하나의 재고를 감소시키는 로직이 있다고 가정해보자.
스프링 카프카 컨슈머에서 poll() 로 가져온 레코드들을 처리하다 오프셋을 커밋하기 전에 SIGTERM, SIGINT 와 같은 종료 요청이 오면 어떻게 동작하는지 문득 궁금증이 생겨서 테스트를 진행해 보았다.
서론 주니어 개발자인 내가 코드를 작성할 때 자주 들던 고민이 있다. 바로 계층간 모델을 어떻게 매핑할 것인가이다. 그러던 중 만들면서 배우는 클린 아키텍쳐 라는 책에서 계층간 모델을 매핑하는 다양한 전략들을 소개하는 부분을 읽고 느낀점을 정리하려고 한다.
이번에는 이미지의 태그가 새로운 버전으로 업데이트 될때마다 실행중인 k8s 파드 역시 새로운 버전에 맞게 무중단으로 배포하고자 한다.
어플리케이션을 컨테이너로 배포하기 위해서 일반적으로 Dockerfile을 작성하고 도커를 설치해 도커 이미지를 빌드하고 배포하는 과정을 진행해야한다.하지만 도커를 설치하지 않고 Dockerfile을 작성할 필요없이 Java 기반의 어플리케이션을 컨테이너로 쉽게 빌드하고
외부 환경에서 가상머신으로 접속이 까다롭다는 점이다.가상머신이 설치되어 있는 서버에서는 쉽게 접근할 수 있지만 외부에서 접근하려면 포트포워딩이 가능하도록 외부 포트를 설정하고 개방해줘야한다.
Vagrant는 가상 머신 환경을 구축하고 관리할 수 있는 도구이다. 수동으로 가상머신의 자원을 할당하고 OS 이미지를 설치하고 초기 세팅들을 설정할 필요없이, 인프라를 코드로 작성(IaC)해두면 자동으로 인프라를 프로비저닝 할 수 있다.
순수함수는 값을 반환하기만 하고 다른일은 하지 않아야 한다.함수 외부의 어떤 것도 변이시켜서는 안된다. 내부에서 상태를 변이시키더라도 그 상태를 외부에서 관찰할 수 없어야 한다.인자를 변이시켜서는 안 된다.예외나 오류를 던져서는 안된다.항상 값을 반환해야 한다.인자가