전체 글97 이사가요,, 포스팅은 부담스러워 노션에만 남긴 트러블 슈팅,이야기들이 한트럭..가볍게라도 기록하기 위해 앞으로 주절주절 낙서장만 운영합니다https://ilyadelavie.gitbook.io/ 2025. 3. 16. 외부 API 장애 대응을 위한 Circuit Breaker 구현(Feat.함수형 프로그래밍) 기존 서버 구성 블로그 검색을 위해 Open api 사용중 카카오 API 하나의 벤더에만 의존 장애 혹은 요청 실패 시 사용자가 여러 번 재시도 하거나 응답시간 길어지는 상황 발생 그래서? 일시적이고 단발성인 에러는 retry 패턴같은 전략을 사용하거나 타임아웃을 줘서 에러를 try-catch 하면 되지만 에러가 지속적으로 발생할 때는 응답을 받지 못한 요청이 타임아웃이 될 때까지 쓰레드풀을 잡고 있는다거나 메모리를 잡아 먹으면서 리소스가 부족해지는 등 다양한 bad 케이스가 발생할 수 있다. 위와 같은 이유로 외부 API 요청에서 장애 발생 시 작업이 실패했음을 받아들이고 타 벤더 API로 교체하기 위한 서킷 브레이커 패턴을 적용하여 교체 로직을 구현하려고 한다. 이 글에서는 서킷 브레이커 패턴에 대한.. 2023. 7. 13. [후기] 카카오 뱅크 Highlight 사전 과제 후기 보호되어 있는 글 입니다. 2023. 7. 7. [후기] 이스트소프트 코딩테스트 후기 보호되어 있는 글 입니다. 2023. 6. 14. [후기] 토스 코딩테스트 후기(server/3년 이하) 보호되어 있는 글 입니다. 2023. 5. 17. Redis와 I/O Multiplexing 레디스는 기본적으로 유저 레벨에서는 싱글 스레드로 요청을 처리한다. 하지만 실제 명령에 대한 작업은 이벤트 루프를 이용해 요청을 수행하며 커널 I/O 레벨에서는 스레드 풀을 이용하여 논블로킹 방식으로 요청을 비동기 처리하고 있다.(I/O Multiplexing) 그럼 싱글 스레드로 동작하는 레디스에서 I/O Multiplexing은 어떤 요청을 처리 방식을 말하는걸까? 먼저 실행중인 레디스 프로세스를 조회해보면 아래와 같이 3개의 스레드가 동작하고 있다. 메인 스레드 외 뭔가 부가적인 작업들이 다른 스레드들에서 수행되고 있다는 것인데 레디스의 스레드를 처리하는 파일인 bio.h 를 보면 다음과 같은 코드를 볼 수 있다. /* Background job opcodes */ enum { BIO_CLOSE_.. 2023. 5. 15. 이전 1 2 3 4 ··· 17 다음