목록전체 글 (47)
구름위키
최근 개발에 관련된 글을 보다 흥미로운 글을 하나 발견했다. https://codex.epril.com/migrating-spring-boot-to-nestjs/ 9시간이 사라질 뻔했다 — Spring Boot 백엔드를 NestJS로 옮긴 이야기메모리 절약과 언어 통일을 위해 Spring Boot에서 NestJS로 마이그레이션한 경험codex.epril.com 바로 Spring Boot로 만들어진 서버를 NestJS로 마이그레이션 이야기였다.이 개발자는 블로그를 Spring Boot로 직접 만들어서 운영하고 있었다. 기능은 잘 돌아갔지만 문제는 기능이 아니었다고 한다.이 서비스가 돌고 있는 서버의 메모리는 1.8GB로 작은 EC2 인스턴스 하나인데 JVM 하나가 500MB 가까이 쓰고 있다는 것을 발견했..
최근에 오랫동안 즐겨 하는 게임의 서버가 터져 약 5시간동안 접속 장애가 발생한 적이 있었다. 특별한 날을 기념해 큰 이벤트와 업데이트를 준비했다고 홍보했기 때문에 사람이 많이 몰릴 것은 충분히 예상하고 있었을 것이다. 하지만 그럼에도 서버는 터졌고, 플레이어들은 접속을 하지 못하고는 했다.이후 게임 회사의 공식 입장을 보면 "예상보다 많은 접속이 단시간에 집주오디면서 원활한 게임 이용이 어려운 상황이 발생했다."라고 말하고 있다. 그러면서 "이후 추가 서버를 긴급하게 투입해 접속 불안정 현상을 해소하려 했으나 현재까지도 불안정한 현상이 지속되어 안정적인 서비스 환경을 제공하기 위한 작업을 계속 진행중에 있습니다." 라고 말하며 서버를 증설했다는 이야기를 하고 있다.분명히 트래픽을 감당할 만한 서버를 증..
개발자 커뮤니티에서 아래와 같은 글을 보았다.https://mvineetsharma.medium.com/11-kafka-design-patterns-for-every-backend-engineer-f053bdadd99e 11 Kafka Design Patterns for Every Backend EngineerBrief intro, detailed explainer for each pattern, Mermaid diagrams, small code snippets.mvineetsharma.medium.com한 개발자가 작성한 글로, Apache Kafka를 사용할 때 필요한 11가지 핵심 패턴이라는 내용이었다.일반적으로는 Kafka를 Pub/Sub 저장소로 사용한다. 하지만 효과적으로 사용하기 위해서는 ..
어느 날, 우연히 아래 글을 접하게 되었다.https://news.hada.io/topic?id=32156 Canva는 어떻게 수억 건의 사용자 세션을 빠르고 안전하게 유지할까? | GeekNewsCanva는 초당 수십만 건의 요청이 쏟아지는 수억 명의 사용자 세션을 검증하면서, 배포 때마다 게이트웨이 수백 개가 MySQL에서 100만 건 이상의 취소 기록을 읽는 병목을 해결함 최근 12시간의 기록news.hada.io유명한 웹 문서 편집 사이트인 Canva에서 대규모 세션을 처리하는 방법에 대한 내용이었다.평소 대규모 트래픽 처리에 관심을 갖고 안정적인 서비스 운영에 관심을 갖고 있는 나에게 이런 글은 항상 흥미롭다.이 글을 읽고 배운 점과 느낀 점에 대해 이야기해보려고 한다. Canva는 무슨 문제를..
기획과 개발 사이의 불일치를 마주하다. Igniter 팀에서 Fooding 프로젝트를 진행하고 있다. 우리는 기획이 나오면 동시에 디자인과 프론트, 백엔드가 모두 개발을 진행한다. 그렇기에 빠른 개발과 진행이 된다는 장점이 있지만 기획이 중간에 수정되거나 변경되면 진행하던 개발에 차질이 생긴다는 문제가 생긴다. 실제로 기획을 토대로 개발이 진행되는 도중, UX적인 측면에 의해 추가적으로 필요한 API 응답이 생기거나 수정되는 경우는 굉장히 자주 발생하게 되었고, 심한 경우에는 아예 방향이 바뀌어 완전히 새로운 기능을 만들어야 하는 경우도 있었다. 이러다보니 프론트엔드에서 API와 화면을 연결할 때 서로 맞지 않아 난감한 상황을 많이 겪게 되었다. 기획이 변경되면 당연히 이 변경 사항이 API 명세에도 적..
배경SNS를 만드는 프로젝트를 진행하며 조회수를 배치 함수로 주기적 업데이트하는 로직을 만들었다. 이 때, Redis에 특정 게시물에 업데이트 될 조회수를 미리 저장해두고 한 번에 업데이트를 하도록 만들었다. INCR 자료구조를 사용해 post:view:{postId}에 대해 값을 1씩 증가하게 만들고, 배치 함수로 업데이트할 때 값을 지우는 방식으로 구현했다.의문근데 이렇게 되었을 때, 추후 서비스가 커지고 게시글과 트래픽이 많아지면 키가 지나치게 많아질 수 있다는 생각이 들었다.postId가 10,000번에서 30,000번인 게시글들에 사용자가 동시에 3명씩 요청이 들어왔다고 칠 때, 동시에 약 60,000의 요청이 들어왔고 이 요청은 모두 Redis로 흘러갔을 것이다.이 때, post가 20,000..
