서킷 브레이커의 주요 기능은 다음과 같다. 다량의 오류를 감지하면 서킷을 열어 새 호출을 받지 않는다. 서킷 브레이커는 서킷이 열려 있을 때 빠른 실패로직을 수행한다. 즉 이어지는 호출에서 시간 초과 등으로 말미암은 새로운 오류가 발생하지 않게 하며, fallback
게시판과 회원이 있다. 한명의 회원은 여러개의 게시글을 작성할 수 있다. 게시판과 회원은 다대일 관계다.게시 글을 통해서 게시 글을 작성한 회원 정보를 조회할 수 있다.
영속성 컨텍스트(Persistence Context)는 논리적인 개념으로 Entity Manager를 생성 할 때 자동으로 만들어진다. 영속성 컨텍스트는 엔티티 객체들을 관리하는 일종의 컨텐이너라할 수 있으며, EntityManager를 통해서 접근 할 수 있다. 따라
카프카 싱글 브로커로 공부하기에는 진행하기가 어려워서 클러스터로 구성하는 방법으로 변경하였다. 클러스트 구성은 https://akageun.github.io/2020/05/01/docker-compose-kafka-cluster-manager.html 도커 컴포즈 파일
카프카를 구성하는 주요 요소 주키퍼 : 아파치 프로젝트 애플리케이션 이름, 카프카의 메타데이터 관리 및 브로커의 정상상태(health check)을 담당한다. 카프카 또는 카프카 클러스터(kafka cluster): 아파치 프로젝트 애플리케이션 이름, 여러대의 브로커를 구성한 클러스터를 의미 브로커 : 카프카 애플리케이션이 설치된 서버 또는 노드를...
카프카는 데이터를 받아서 전달하는 데이터 버스의 역할을 한다. 카프카에 데이터를 만들어서 주는 쪽을 프로듀서, 카프카에서 데이터를 빼내서 소비하는 쪽을 컨슈머라고 한다. 주키퍼는 카프카의 정상 동작을 보장하기 위해 메타데이터를 관리하는 코디네이터라고 할 수 있다. 메
Docker로 카프카, 주키퍼 컨테이너 생성하기 docker-compose.yml 파일 작성하기 도커 컴포즈 실행 > docker-compose up -d 프로듀서, 컨슈머 스크립트 다운받기 > https://www.apache.org/dyn/closer.cgi?
이직 후 이전 개발자가 작성한 테스트코드에 RefreshDatabase 트레이트를 사용하는 코드로 리팩토리 중에 아래와 같은 에러를 마주치게 되었다. 이 에러를 해결하는데 상당히 많은 고생을 하였다. 단위 테스트 수행 중에 롤백 관련된 문제였는데 어느 부분이 직접 원인
4 f-string 통한 인터폴레이션을 사용하 pantry = [ ('abcd', 1.25), ('bbbb', 2.5) ] for i, (item, count) in enumerate(pantry): print(f'{i} {item} {coun
Real Mysql 책에서 소개하는 데드락 상황을 라라벨 artisan tinker로 쉽게 재현하려고 한다.(django manage shell에서는 데드락 상황을 만들수가 없다)이 책에서는 총 4가지 패턴을 정리하고 있다.상호 거래 관련유니크 인덱스 관련외래키 관련서
Cacheops나 Cachalot는 장고의 ORM 캐싱을 쉽게 도와주는 패키지이다. 두 패키지가 어떻게 ORM을 캐싱하는지 실습으로 간단하게 사용해보자. 테스트로 사용할 모델은 아래와 같다 Cachalot > However, it’s not suited for p
이 글에서는 기본적인 페이지네이션 종류와 차이점, 그리고 실무 경험으로 바탕으로 각 페이지네이션 적용 방법, CursorPagination에서 오해 할 수 있는 깊이있게 다루고자 한다. 장고 rest-framework에서 기본적으로 제공하는 페이지네이션은 아래와 같다.
python 3.5부터는 타입힌트를 제공해준다. 유의해야 할 점은 개발자가 실수로 타입힌트를 잘못 적어도 런타임시 문제가 발생하지 않는다. (필자가 격어봄) 정적에서 이를 탐지할 수 있는 툴이 바로 Mypy 이다. > pip install mypy mypy_test