전체 글
백엔드 아키텍처 기초 5 - 메시지 큐, 로그, 메트릭, 자동화
백엔드 아키텍처 기초 1 백엔드 아키텍처 기초 2 - 응답시간 개선 백엔드 아키텍처 기초 3 - 웹 계층 수평적 확장 백엔드 아키텍처 기초 4 - 데이터 센터 백엔드 아키텍처 기초 6 - 데이터베이스 규모 확장 기초 4에서는 전 세계에서 사용할 때 나라별로 데이터센터를 두어 지리적 라우팅으로 요청 및 응답을 처리하였다. 하지만 데이터 센터마다 데이터 동기화 문제가 있을 수 있다. 이러한 문제를 해결하기 위해 메시지 큐를 사용해보자. 🚀 메시지 큐(message queue) 메시지 큐는 메시지의 무손실(durability)을 보장하는 비동기(asynchronous) 통신을 지원하는 컴포넌트 즉, 메시지 큐에 보관된 메시지는 꺼낼 때까지 안전히 보관된다는 특성을 지님 생산자(producer) or 발행자(p..
kafka 서버에 요청 시 TimeoutException 발생
kafka 3.5버전 🚀 문제 상황 zookeeper 서버 실행 -> kafka 서버 실행 -> kafka 서버에 토픽이 있는지 확인 요청 -> TimeoutException zookeeper와 kafka 서버 둘 다 서버 기동 확인하고 포트번호 확인하였고, 그 후 카프카 서버에 토픽 확인 요청이나 생성 요청을 보낼 시에 찾지못하고 TimeoutException이 발생했다. 자세한 내용을 보면 "Timed out waiting for a node assignment"로 노드 할당 대기 시간 초과라고 되어있었다. 카프카 서버에 무언가 제대로 요청이 안되었음을 직감하고 stackoverflow에 검색해보았다. 🚀 해결 방법 카프카 설정폴더 안에 server.properties를 수정한다. 위 사진처럼 주석이..
백엔드 아키텍처 기초 4 - 데이터 센터
백엔드 아키텍처 기초 1 백엔드 아키텍처 기초 2 - 응답시간 개선 백엔드 아키텍처 기초 3 - 웹 계층 수평적 확장 백엔드 아키텍처 기초 5 - 메시지 큐, 로그, 메트릭, 자동화 백엔드 아키텍처 기초 6 - 데이터베이스 규모 확장 기초 3에서는 무상태 웹 계층을 가지면서 유연하고 확장성 있는 아키텍처 구조를 살펴보았다. 이제는 전 세계에서 접속한다고 했을 때를 생각해보자. 전 세계에서 사용한다면? 🚀 데이터 센터 장애가 없는 상황에서 사용자는 가장 가까운 데이터 센터에서 처리됨 이를 지리적 라우팅(geoDNS-routing)이라고 함 한국 사용자는 Korea DC1, 미국 사용자는 USA DC1 으로 안내됨 만약 데이터 센터 하나가 장애 발생 시, 다른 데이터 센터로 모든 트래픽이 전송됨 ⚠️ 다중 ..
Spring Cloud Config Client에서 actuator refresh 장애
Spring Cloud Config Client 에서는 Config Server의 변경된 설정정보를 받기위해서는 actuator refresh 방법으로 설정정보를 갱신할 수 있다. 그런데 아무리 refresh를 해도 변경된 설정정보가 갱신이 안되는 장애를 겪었다. 아무리 살펴봐도 application.yml에 잘못적은 것이 아닌데 무엇이 문제인가 생각하다가 bootstrap 라이브러리때문인 것을 알게되었다. 🚀 상황 Spring Cloud Config Server에서 변경된 설정정보를 받으려고 Actuator refresh API 호출함 refresh API 호출하였지만 설정정보가 갱신되지 않음 🚀 문제해결 Spring Cloud Config 공식홈페이지에서 Spring Cloud Config Clien..
백엔드 아키텍처 기초 3 - 웹 계층 수평적 확장
백엔드 아키텍처 기초 1 백엔드 아키텍처 기초 2 - 응답시간 개선 백엔드 아키텍처 기초 4 - 데이터 센터 백엔드 아키텍처 기초 5 - 메시지 큐, 로그, 메트릭, 자동화 백엔드 아키텍처 기초 6 - 데이터베이스 규모 확장 백엔드 아키텍처 기초 1에서는 규모에 따른 웹 계층을 수평적 확장하는 방법을 알아봤다. 웹 서버를 Scale Out 하더라도 로드 밸런서를 통해 트래픽 분산을 시키는 방법이다. 하지만 사용자 상태 정보와 같은 점은 생각하지 않았다. 이번에는 그에 관해 고민하고 정리한다. 웹 서버끼리 상태 정보는 어떻게 하나요? 🚀 무상태(stateless) 웹 계층 상태 정보를 웹 계층에서 제거하고, DB 같은 지속성 저장소에 보관하고 필요할 때 가져오는 것 📚 상태 정보 의존적인 아키텍처 서버는 ..
백엔드 아키텍처 기초 2 - 응답시간 개선
백엔드 아키텍처 기초 1 백엔드 아키텍처 기초 3 - 웹 계층 수평적 확장 백엔드 아키텍처 기초 4 - 데이터 센터 백엔드 아키텍처 기초 5 - 메시지 큐, 로그, 메트릭, 자동화 백엔드 아키텍처 기초 6 - 데이터베이스 규모 확장 백엔드 아키텍처 기초1에서는 사용자 규모에 따른 시스템 설계를 알아봤다. 이제는 응답시간(Latency) 개선에 대해 알아보자. 응답 시간은 캐시(Cache)와 콘텐츠 전송 네트워크(CDN, Content Delivery Network)로 개선할 수 있다. 사용자는 어떻게 웹사이트의 응답을 빨리 받아볼 수 있을까? 🚀 캐시 비싼 연산 결과 or 자주 참조되는 데이터를 메모리에 올린 후, 메모리에서 응답하는 임시 저장소 DB에서 조회하는 것보다 메모리에서 조회하는 것이 매우 빠..
AWSome Day 온라인 컨퍼런스 후기
편하게 듣고 정리할 생각은 없었는데 메일을 보니 참석 증명서를 보내주길래 적게되었다. 받아보면 성취감과 AWS의 좋은 감정이 생겨서 글로써 남기고 싶어졌다. 클라우드 서비스를 제공하는 여러 회사들이 있다. AWS Azure Google Cloud Oracle Cloud 네이버 클라우드 ... 이 중 가장 많은 점유율을 가지고 있는 AWS가 궁금했었는데 마침 AWS 온라인 컨퍼런스 신청을 받고 있길래 냅다 신청하고 들었다. 온라인 강의처럼 3시간동안 듣는 형식이라 큰 부담이 없었다. AWS 클라우드 개념 AWS 핵심 서비스 설명 AWS 사용 사례 위와 같은 내용으로 이루어져 있어서 입문자가 듣기 아주 좋았다. 🚀 강연 목록 🚀 AWS 클라우드 소개 온프레미스는 데이터 센터를 직접 구축, 소유, 운영하는 것..
백엔드 아키텍처 설계 기초
백엔드 아키텍처 기초 2 - 응답시간 개선 백엔드 아키텍처 기초 3 - 웹 계층 수평적 확장 백엔드 아키텍처 기초 4 - 데이터 센터 백엔드 아키텍처 기초 5 - 메시지 큐, 로그, 메트릭, 자동화 백엔드 아키텍처 기초 6 - 데이터베이스 규모 확장 백엔드 개발자로서 서버 개발을 먼저 학습했지만, 정작 아키텍처 설계를 어떻게 해야하는가에 대한 고민을 많이 하지 않았다. 당연하게 [클라이언트]-[서버]-[데이터베이스] 구조로만 생각했었다. 지금은 MSA와 여러 아키텍처에 대한 학습을 하다보니 어떤 식으로 설계를 해야하는가에 대한 고민이 생겼다. 메시지 큐(message queue)는 어느 환경에서 사용해야할까? 트래픽이 증가하면 단일 서버가 장애나지 않을까? 현재 프로젝트를 멀티 서버로 했을 때의 문제점은..