기존 PostgreSQL을 MySQL로 전환하지만, v1, v2 API를 둘 다 제공해야 하므로 두 데이터베이스 간 데이터는 동기화되어야 함
좋아요 설정/해제는 v1만 사용하도록 하고 SQS를 이용해서 이 데이터를 MySQL에 저장되게 한다.
좋아요 조회는 v1과 v2를 모두 이용하게 했다.
데이터 이관은 PostgreSQL을 덤프한 뒤 MySQL에 로드하게 했고 마이그레이션 중의 데이터는 SQS를 통해서 MySQL에 추가된다.
배민쇼핑라이브를 만드는 기술: 채팅 편 : 배달의민족 쇼핑라이브에서 많을 때는 분당 2만 건이 넘는 메시지를 처리하기 위한 채팅을 직접 구현하기로 하면서 Redis의 Pub/Sub과 Webflux를 이용해서 채팅을 구현한 과정을 설명한다.
이전에 구현했던 경험을 통해 WebSocket의 사용을 최소화해서 REST API를 사용할 수 있는 부분은 WebSocket의 커맨드를 이용하지 않도록 하여 WebSocket 처리에는 메시지를 보내고 받는 부분에 집중되도록 했다.
WebFlux로 non-blocking의 이점을 얻기 위해 대부분의 데이터는 Redis를 이용하고 RDB에 보관해야 하는 API는 별도로 분리했다.
WebSession을 사용했는데 어느 날 10,000개의 최대 세션 개수를 넘어서면서 오류가 발생하여 WebSession을 사용하지 않도록 개선했다.
관리자 사이트에서 너무 많은 메시지를 브라우저에서 렌더링하다가 멈추는 문제가 발생하여 리스트를 가상화하고 렌더링 횟수를 줄여서 성능 문제를 해결하였다.
또 depedency 버전을 잘못 설치하고 말았다. : 어느 환경에서나 의존성 관리는 어렵기 마련인데 npm이 의존성 관리에 이용하는 node_modules, package.json, package-lock.json의 개념과 이 각 파일의 존재 여부에 따라 의존성 설치가 어떻게 달라지는지 설명한다.(한국어)
Understanding How Facebook Disappeared from the Internet : 지난 10월 5일 Facebook, Instagrm, Whatsapp이 5시간 정도 접속이 안 되는 장애가 발생했는데 이를 Cloudflare에서 분석 정리한 글이다. 이번 장에는 서버에 접속 안 된 것뿐 아니라 DNS 룩업도 안되고 인터넷에서 페이스북이 운영하는 모든 네트워크에 연결이 아예 되지 않았다. 서버에서 오류 응답을 받는 게 아니라 페이스북이 인터넷에서 사라진 상황이었다.(영어)
BGP(Border Gateway Protocol)은 인터넷의 AS(Autonomous Systems)가 라우팅 정보를 교환하는 프로토콜이다.
페이스북의 발표에 따르면 페이스북이 백본 라우터를 조정하면서 데이터센터 백본이 끊어지면서 BGP 요청을 거부하고 DNS에서 접근이 불가능하게 되어버림.
BGPlay에서는 이전 시간의 BGP도 볼 수 있으므로 페이스북의 장애 시점에서 BGP 경로가 사라진 것도 볼 수 있다.
Connection Timeout과 Read Timeout 살펴보기 : Connection Timeout은 종단 간 연결하는데 필요한 최대 시간을 의미하므로 이 시간이 넘어가면 연결할 수 없다고 판단하고 오류가 발생한다. Read Timeout은 연결된 종단 간에 데이터를 주고받을 때 걸리는 최대시간이고 이 시간 내에 데이터를 다 받지 못하면 오류가 발생한다. 이를 바탕으로 연결할 때 SYN, SYN+ACK, ACK가 유실되는 경우를 생각하면 3초가 Connection Timeout으로 이상적인 값이고 Read Timeout은 패킷 유실과 요청 처리 시간을 고려해서 1초 정도로 제안하고 있다.
페이스북 내부고발자 프랜시스 하우건 청문회 모두발언 전문 : WSJ를 통해 페이스북의 문제를 보도하게 했던 페이스북의 내부고발자 프랜시스 하우건이 미국 상원 청문회에서 한 모두 발언을 번역한 글이다. 프랜시스 하우건은 페이스북에서 가짜 뉴스를 막는 일을 했는데 페이스북은 항상 이윤을 추구해서 아이들에게 미치는 영향과 분열을 조장하는 메시지를 확산시키고 있다고 폭로했다. 이러한 큰 영향력이 있음에도 제지를 거의 받고 있지 않고 의회가 소셜미디어가 바뀌도록 해야 한다고 주장하고 있다. 꼭 한번 읽어볼 만한 글이라고 생각한다.(한국어)
Comments