본문 바로가기

전체 글

(43)
가상 면접 사례로 배우는 대규모 시스템 설계 기초 (feat. 12장 채팅 시스템 설계) 들어가기 전에최근들어 다양한 서비스에서 채팅이 필수적으로 활용되고 있습니다. 당O마켓, 블O인드, 별스타그램 등 비즈니스 분야에 상관 없이 활용되고 있습니다. 이번 포스팅에서는 채팅 시스템 설계에 대해 알아볼 예정입니다.추가로 채팅 시스템을 구현하기 위해 STOMP를 많이 사용하는 것으로 알고 있다. (참고) 추후 다른 포스팅에서 STOMP에 대해 알아볼 예정이며 당근마켓의 채팅 시스템에 대해서도 테크밋업 영상을 통해 알아볼 예정입니다. 채팅 시스템 설계를 구현할 예정이신 분들은 해당 링크들을 참고해 주시면 감사하겠습니다.1단계 : 문제 이해 및 설계 범위 확장채팅 설계를 위한 요구사항은 아래와 같다.모바일 앱 / 웹 둘 다 지원해야 한다.일별 능동 사용자 수(DAU) 5천만 명을 처리할 수 있어야 한다..
가상 면접 사례로 배우는 대규모 시스템 설계 기초 (feat. 11장 뉴스 피드 시스템 설계) 들어가기 앞서 소셜 미디어와 관련된 개발 경험이 없어 어떤 예시를 들어야 할지 잘 모르겠습니다. 최근에 유튜브에서 페이스북의 스토리에 대한 영상을 보았는데 너무 재미있었어요. 또한 페이스북의 지속적인 도전이 얼마나 대단했는지 느낄수 있었습니다. 오늘은 페이스북의 뉴스피드 설계에 대한 내용을 살표볼 예정입니다. 페이스북의 스토리와 뉴스피드의 탄생 스토리가 궁금하신 분들은 잠시 쉬어가는 타임으로 영상 추천드립니다.https://youtu.be/NWcquFb4iKo?si=LydrjWWbKCO1Fbtm뉴스 피드 시스템 설계뉴스 피드는 홈페이지 중앙에 지속적으로 업데이트되는 스토리들입니다. 해당 스토리에는 사진, 동영상, 링크, 광고등 다양한 것들을 포함하고 있습니다. 아래는 별스타그램의 뉴스피드 입니다.  1단..
가상 면접 사례로 배우는 대규모 시스템 설계 기초 (feat. 10장 알림 시스템 설계) 들어가기 앞서여러분들의 휴대폰에도 여러 알람들이 울리시나요? 이번장에서 알아볼 내용은 알림 시스템 설계입니다. 최근 온라인 서비스에서 알람의 역할은 매우 중요하다고 생각합니다. 이벤트 정보, 할인 쿠폰 제공, 주식 가격 변동 알림 까지 다양한 정보를 푸시 알림을 통해 서비스 이용자에게 발송하고 있습니다. 푸시 알람 뿐만 아니라 카카오톡, 문자, 메일까지 다양한 매체가 활용되고 있습니다. 알림 시스템 설계알림 시스템은 최신 뉴스, 제품 업데이트, 이벤트, 선물 등 고객에게 중요한 정보를 비동기적으로 제공합니다. 알림은 모바일 푸시 알림에 한정되지 않고 SMS메시지, 메일등 다양한 채널로 활용되고 있습니다. 1단계 : 문제 이해 및 설계 범위 확장하루에 백만 건 이상의 알림을 처리하는 확장성 높은 시스템을 ..
가상 면접 사례로 배우는 대규모 시스템 설계 기초 (feat. 8장 URL 단축기 설계) 들어가기 앞서이번 포스팅에서는 URL 단축기 설계에 대해 알아볼 예정입니다. 블로그에 글을 쓸때 불편할 때가 있습니다.https://www.agoda.com/ko-kr/onsen-ryokan-yuen-sapporo-h15472820/hotel/sapporo-jp.html?finalPriceView=1&isShowMobileAppPrice=false&cid=1922868&numberOfBedrooms=&familyMode=false&adults=1&children=0&rooms=1&maxRooms=0&checkIn=2025-03-19&isCalendarCallout=false&childAges=&numberOfGuest=0&missingChildAges=false&travellerType=-1&showRe..
가상 면접 사례로 배우는 대규모 시스템 설계 기초 (feat. 7장 분산 시스템을 위한 유일 ID 생성기 설계) 들어가기 앞서 책내용과는 무관한 이야기를 해보려 합니다. 아마 서비스를 개발하다 보면 유일 ID가 필요한 경우가 많이 있을 거라고 생각합니다. 가장 쉬운 예제로 회원 정보를 생성할때 아이디를 제외한 유일 ID를 많이 사용합니다. 제가 다녔던 이전 회사에서는 아이디가 생성할때 마다 1씩 증가하는 숫자 형태로 사용하였습니다. (지금은 사용하지 않습니다.) 하지만 이렇게 1씩 증가하는 값들은 보안에 취약하다는 단점이 있습니다. 제가 만약 회원가입 이후 4389라는 고유한 값을 받았다면, 다음사람은 4390가 될 것입니다. 혹여나 사용자의 회원 정보 조회 API의 URL이 "GET /user/{member-number)" 라면 어떻게 될까요? 저는 모든 사람들의 회원정보를 조회할 수 있습니다.  https://..
가상 면접 사례로 배우는 대규모 시스템 설계 기초 (feat. 4장 처리율 제한 장치의 설계) 들어가기 앞서이전 1장 포스트을 보고 오신 분들은 갑자기 4장으로 이어져서 당황스러울 수도 있습니다. 2장, 3장에 내용은 "면접관에게 질문을 통해서 궁금증을 해소 하라"와 같은 시스템 설계 면접에 대한 부분이라 따로 정리하지 않았습니다. 해당 부분은 추후 기회가 된다면 정리할 예정입니다. 2장, 3장 내용이 궁금하신 분들은 책을 한 번 읽어 보는 것을 추천 드립니다.  https://www.yes24.com/Product/Goods/102819435 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 예스24“페이스북의 뉴스 피드나 메신저, 유튜브, 구글 드라이브 같은 대규모 시스템은 어떻게 설계할까?”IT 경력자라도 느닷없이 대규모 시스템을 설계하려고 하면 막막하다고 느낄 수 있다. 특히나www.y..
가상 면접 사례로 배우는 대규모 시스템 설계 기초 (feat. 1장 사용자 규모에 따른 규모 확장성) 들어가기 앞서요즘 어떻게 공부를 해야 할까 고민이 많습니다. 온라인 강의를 들으면 너무 온라인 강의에 의존하는것 같고, 책을 읽자니 아무래도 온라인 강의 보다 최신 트렌드는 조금 뒤쳐지는 것 같아요. 그래도 머리박고 그냥 해야 겠죠?  네.. 이전에는 기술 세미나 영상에 대한 공부를 했다면 이번에는 책을 읽고 정리를 하려고 합니다. "가상 면접 사례로 배우는 대규모 시스템 설계 기초"는 많은 테크 회사들이 스터디를 위해 선택하는 등 평이 괜찮은 책인것 같습니다.  백엔드 개발자에게 대규모 시스템, 분산 시스템, 성능 개선에 대한 학습은 중요하다고 생각하며 이 책은 시스템 설계에 대한 내용을 다루고 있습니다. 내용이 어려운 편이 아니고 편하게 읽기 좋으니 백엔드 개발을 하시는 주니어 개발자분들이시라면 한 ..
카카오 선물하기 팀의 캐싱 전략 (하이브리드 캐시와 캐시 웜업 자동화) 들어가기 앞서이번 글은 카카오의 기술 세미나 영상을 보고 정리한 글입니다. 저 역시 영상을 보고 공부하는 주니어 개발자 이기 때문에 틀린 개념이 있을수 있습니다. 또한 영상에 없는 내용, 저의 주간적인 의견과 경험을 함께 정리할 예정이기에 틀린 내용이 있을수 있습니다. 혹시나 틀린 내용이 있다면 댓글에 알려주시면 감사하겠습니다~ :)  대용량 트래픽 아니면 안 보셔도 됩니다! 선물하기 서비스 캐싱 전략 / if(kakaoAI)20241. 개선 배경  카카오의 선물하기 서비스는 특정 이벤트나 프로모션을 진행하게 되면 대량의 트래픽이 발생하였습니다. 하지만 문제가 되던 이벤트의 트래픽은 평소 이벤트 트래픽 대비 3배, 평소 대비 13배 이상의 부하를 야기해, 예상치 보다 많은 트래픽으로 인해 데이터베이스 및..
DB Replication (with 우아한 테크 코스's 테크톡) 들어가기에 앞서이번 포스팅에서는 우아한 테크 코스에서 공유한 테크톡(리비의 DB Replication)을 보고 함께 공부해 보려고 합니다. 제가 취업을 준비하던 시기부터 회사를 다니고 지금까지도 항상 보면서 많이 배우고 있는 유튜브 채널중 하나입니다. 그래서 앞으로는 우테코의 테크톡 뿐만 아니라 카카오, 네이버, 당근마켓, 인프런 등등 빅테크 기업들이 공유하는 기술 세미나 영상을 보면서 정리하며 공하는 글을 자주 올리려고 합니다.  이번 편은 Database Replication에 대한 영상입니다. 저 역시 이전에 다니던 회사에서 Database Replication을 구성해 두었는데, 복제 지연을 어떻게 해결할 것인가에 대해 고민해 본 적이 있습니다. 우테코에서는 어떻게 데이터베이스 복제를 다루고 공부..
G1GC (with Garbage First GC) GC에 대해 알아보기 이전에 해당 글은 인프런 강의를 듣고 정리한 글입니다. 강의 링크 Java와 JVM에 대해 쉽게 설명해 주는 좋은 강의라고 생각합니다. 더 자세한 내용이 궁금하신 분들은 해당 강의를 들어보는 것을 추천드립니다.    힙 영역( with GC)GC(Garbage Collector)가 관리하는 메모리 영역으로 Java에서 사용되는 객체의 인스턴스 및 배열이 저장되는 공간세대별 컬렉션 이론을 기반으로 설계 및 운영Eden, SurvivorNew, Old GenerationMetaspace거의 모든 인스턴스는 힙 영역에 저장된다.GC가 처리해야 할 문제의 핵심 3요소회수 대상 메모리를 판단하는 것메모리 회수 시점메모리 회수 방법JVM Garbage CollectorHeap 영역에서 참조되지..
백준 11053 알고리즘 풀이 (가장 긴 증가하는 부분 수열) 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. (문제에 풀이에 대한 코드는 제공하지 않습니다.)https://www.acmicpc.net/problem/11053문제 풀이LIS(Longest Increasing Subsequence)는 주어진 배열에서 가장 긴 증가하는 부분 수열을 찾는 문제입니다. 이는 동적 계획법(DP, Dynamic Programming)을 활용하여 효율적으로 해결할 수 있는 대표적인 문제 중 하나입니다.  1. LIS란?LIS는 배열에서 원소들의 순서를 유..
OAuth 2.1과 2.0 차이 OAuth 2.1을 알아보기 전에.. 저는 이전 회사에서 OAuth 2.1 프로토콜을 기준으로 Authorization Code Grant 방식의 인증을 개발한 적이 있습니다. 약 1년전 2023년 12월 쯤 개발을 했었는데, 그 당시에는 OAuth 2.1에 대한 정보가 많이 없었습니다. ChatGPT 역시 OAuth2.1에 대한 정보가 최신화 되지 않아 OAuth2.1을 공부하는 것이 힘들었는데, 이번에 블로그 글을 작성하며 내용을 정리해 보려고 합니다. OAuth 2.0과 OAuth 2.1의 차이점: 무엇이 달라졌을까?OAuth는 인터넷 애플리케이션에서 인증과 권한 부여를 안전하게 처리하기 위한 표준 프로토콜입니다. 2012년에 공개된 OAuth 2.0 이후 수년간의 경험을 바탕으로 보안성과 구현 간..
안정적인 서비스 배포 - (롤링, 블루그린, 카나리) 배포와 서비스의 안정성백엔드 개발자에게 배포와 관련된 역량은 필수적이라고 생각합니다. 특히 무중단 배포와 배포 안정성 확보는 작은 기업부터 큰 기업까지 반드시 필요한 부분이라고 생각합니다. 이번 글에서는 배포 안정성에 초점을 맞추고, 장애 예방 및 해결 방안, 다양한 배포 전략, 배포 시 유의사항 등을 알아보겠습니다. 배포 과정에서 여러 대의 서버에 수동으로 배포하는 방식은 효율성이 떨어지고 실수로 이어질 가능성이 큽니다. 반면 애자일 방식으로 잦은 배포가 이루어지면서 자동화된 배포 도구(예: 젠킨스, GitLab CI/CD 등)를 활용하는 사례가 늘어나고 있습니다.  배포 중 발생할 수 있는 장애운영 중인 서비스에서 장애가 발생하는 주요 원인은 다음과 같습니다.트래픽 폭증: 예상치 못한 사용자 증가.서..