분류 전체보기

    블라인드 스터디 : 분산 이메일 시스템 설계

    [8장] 분산 이메일 시스템 설계 인터넷의 성장으로 이메일의 양이 늘어나고 활성 사용자도 크게 늘어 이메일 시스템에도 변화가 필요했다 복잡성과 규모 면에서 크게 달라졌으며, 다양한 기능을 갖추게 되었다 1단계 : 문제 이해 및 설계 범위 확정 해당 시스템에는 10억 명의 사용자가 있으며 인증은 따로 존재하지 않는다 사람당 하루에 평균 발신 이메일이 10건, 수신은 40건, 메타데이터는 50KB이라고 가정한다 첨부파일을 포함하는 이메일은 전체의 20%라고 가정하며 크기는 500KB이라고 가정한다 기능 요구사항 - 이메일 수신/발신 - 읽음 여부에 따른 이메일 필터링 - 제목, 발신인, 메일 내용에 따른 검색 - 스팸 및 바이러스 방지 기능 - HTTP를 사용한 연결 - 첨부파일 지원 비기능 요구사항 - 안..

    블라인드 스터디 : 호텔 예약 시스템 설계

    [7장] 호텔 예약 시스템 들어가면서 대규모 사용자가 접근하는 시스템에서 한정 요소에 대해 판매를 하는 시스템은 서버 시스템 설계 질문에서 자주 나오는 문제이다 동시성 문제는 당연히 있을 것이고, 특정 시간 내에 판매가 이루어진다면 급증하는 트래픽에 대한 방어책도 있어야한다 면접에서 실제로 질문 받았던 경험이 있고, 그때의 대답을 비교하면서 공부를 하였다 예약 시스템은 시스템을 사업에 어떻게 이용할 지에 따라 달라지므로, 질문을 던져 범위를 명확히 할 필요가 있다 1단계 : 문제 이해 및 설계 범위 확정 기능 요구사항 시스템 규모는? - 5000개 호텔에 100만개 객실을 갖춘 호텔 체인을 위한 웹사이트 구축 대금은 예약 시 지불? 체크인 시 지불? - 예약할 때 지불 웹 사이트로만 예약이 가능한지? 아..

    블라인드 스터디 : 광고 클릭 이벤트 집계 시스템 설계

    [6장] 광고 클릭 이벤트 집계 여러 플랫폼은 BM으로 광고 클릭 이벤트를 선택하고 있고, 전체 광고 매출에서 차지하는 비중은 커지고 있다 대규모 규모에 걸맞는 광고 클릭 이벤트에 대해 설계해 보겠다 온라인 광고의 핵심적 혜택은 실시간 데이터를 통해 광고 효과를 정량적으로 측정할 수 있어 실시간 경매(Real-Time Bidding, 이하 RTB)라 부른다 이 경매 절차를 통해 광고가 나갈 인벤토리를 거래한다 광고가 나갈 인벤토리를 경매하면, 광고 거래소에서 해당 인벤토리를 제공하고 광고주가 경매를 하게된다 이 프로세스에서 속도가 중요하고, 데이터의 정확성 또한 중요하다 해당 집계는 온라인 광고가 얼마나 효율적이었는지 측정하는데 결정적인 역할을 하며, 광고주가 얼마나 많은 돈을 지불할지에 영향을 준다 핵..

    블라인드 스터디 : 지표 모니터링 및 경보 시스템 설계

    [5장] 지표 모니터링 및 경보 시스템 지표 모니터링 및 경보 시스템의 목적 지표 모니터링 및 경보 시스템은 인프라의 상태를 선명하게 볼 수 있고, 높은 가용성과 안정성을 달성하는데 중추적 역할을 한다 널리 쓰이는 서비스로는 DATADOG, Granfana, Prometheus, Munin, graphite 등이 있다 1단계 : 문제 이해 및 설계 범위 확정 지표 모니터링 및 경보 시스템의 범위는 회사마다 다르므로 상의하여 정확한 요구사항을 알아내는 것이 중요하다 인프라 지표에 맞춘 서비스일 수도, 에러 로그와 액세스 로그에 초점을 맞춘 시스템일 수도 있기 때문이다 고려할 사항으로는 - 시스템의 고객이 누구인가? (시스템 운영 지표 수집, CPU부하, 메모리 사용률, 디스크 사용량, TPS, RPS, 프..

    블라인드 스터디 : 분산 메시지 큐 시스템 설계

    스터디에 들어가기 전 이번에 시스템 설계 면접 사례를 겪게 되고, 테크 컨퍼런스를 찾아보다보니 현 회사에서 겪어보지 못하는, 혹은 직접 개발에 관여하지 않는 대규모 시스템 설계에 대해 더 공부하면 좋겠다 생각이 들어 세 번째 블라인드 구성원들과 함께 하는 스터디로 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2를 시작하였습니다. 8주간 총 13장 중 구성원들이 가장 관심 있어하는 8장에 대해서 진행하려고 하고, 제 기준으로는 가볍지 않은 내용이기 때문에 주마다 한 장씩 공부하면서 블로그에 정리하는 시간을 가져보려고 합니다. 요즘 많이 안 적기도 했고.. [4장] 분산 메시지 큐 분산 메시지 큐를 사용하는 목적 1. 결합도 완화 : 컴포넌트 사이의 강한 결합을 제거하여 독립적으로 갱신 2. 규모 확장..

    블라인드 스터디 : Vladimir Khorikov - Unit Testing

    블라인드에서 스터디원들과 두번째 스터디는 이전 글에 썼던 것 처럼 Unit Testing에 대해 공부했다. 책을 선정한 이유는 리팩터링과 함께 코드 유지 보수에 좋은 습관을 기를 수 있을 것이라 생각하였고 C#으로 쓰인 책이긴 했지만 유니티를 했었어서 이해할 수 있을 거라고 생각했다. 이전과 마찬가지로 한 주에 5~60페이지 씩 진행하여 8주 정도 진행했고 책을 다 읽은지는 한 달정도 됐으나 일이 바빠서.. 이제 쓰게 됐다. 인프런을 따라가다 보면 작성하는 간단한 테스트 기법을 배우는 것을 떠나 좋은 테스트에 대한 기준과 mock, spy 등을 사용하여 테스트 하는 기법, 테스트를 위한 설계 방법, 통합 테스트 설계 등을 배울 수 있었다 또한 마지막 장의 안티 테스트 패턴을 재밌게 보았는데, 한 번씩 의..

    [과제] 우아한 테크캠프(백엔드) 6기 2차 과제 테스트 후기

    후기 2023.05.13 13:00 ~ 17:00 과제 테스트는 처음이였는데 생각보다 어려운 수준의 과제를 요구하였다. 시간은 4시간인데 API를 21가지? 정도 개발하라는 것이였는데 사실 주요 기능은 4~5가지 정도였다. 명세서와 기본 코드, 테스트 코드만 주어지고, 로그인부터 주요 기능까지 만들어야 하는데 Spring의 인터셉터나 로그인 만료,, 이외 다양한 기능들을 해야하는 것이 나왔다. init data.sql이 있는지 모르는 상태로 진행해서 그 부분 때문에 마지막에 좀 꼬였으나 8~90%정도 기능을 완성해서 제출하였고 통과하였다. 오픈채팅방에서 물어보니 로그인까지만 완성한 사람도 통과했다는 말이 있어서 별로 가중치가 높은 테스트는 아니였나 싶었고, 그 후에 저 링크를 들어가보니 자소서는 4문항에..

    블라인드 스터디 : 마틴파울러 - 리팩터링 2판

    블라인드에서 스터디원들을 구해 2달에 한 권정도 공부를 하는 스터디를 진행하였다. 첫번째 책은 좋은 코딩 습관을 기를 수 있는 마틴파울러의 리팩터링 2판 이다. 책을 선정한 이유는 지금까지는 어떠한 기능의 완성만을 위한 개발을 했다면, 이제는 추후의 개발을 위한 미래 지향적인 개발을 하기 위해서였다. 일주일에 한번씩 구글Meet으로 스터디에 대해 이야기하는 시간을 가졌고, 모두 직장인이였기 때문에 부담되지 않게 일주일에 5~60 페이지씩 진행하여 공부한 내용을 공유하였다. 나는 공부한 내용을 노션에 정리하였고, 리팩터링 2판 정리 01 리팩터링 : 첫번째 이야기 mumomu.notion.site 책에 나오는 실습 내용을 JavaScript에서 Java로 변경하여 스터디원들에게 공유하였다 리팩터링이 거의 ..