분류 전체보기

본 콘텐츠는 구름 서포터즈 활동으로 지원을 받아 작성된 교육생의 실제 경험 후기입니다.🏁 치열했던 UNBOX의 마침표데이터의 결과물이 아닌 흐름 그 자체가 궁금해 뛰어들었던 구름 딥다이브 과정. 어느덧 모놀리식 구조에서 시작했던 C2C 리셀 플랫폼 UNBOX가 성공적으로 최종 발표를 마쳤습니다.서비스를 도메인별로 분리하며 MSA로 전환하고, 분산 환경에서 발생하는 정합성 문제를 해결하기 위해 Kafka와 보상 트랜잭션(Saga 패턴)을 도입하며 머리를 싸맸던 기억이 다시 생각나는 것 같습니다.특히 트래픽이 몰리는 상황을 가정한 동시성 제어 테스트에서, Redis Worker Thread와 Backpressure 패턴을 적용해 P95 응답 속도를 13.8초에서 1.13초로 끌어내렸을 때의 경험이 제 귀중..
·CS/System Design
인스타 릴스를 스크롤하거나, 유튜브 알고리즘에 이끌려다니거나, 쿠팡에서 쇼핑할 때 그 뒤에서는 어떤 일들이 벌어지고 있을까요?각 서비스들은 클릭이나 새로고침 같은 간단한 사용자의 액션에도 서로 연결되어 있는 구성 요소들이 계속 작동하면서 사용자에게는 별일 없는 듯한 깔끔한 UX를 제공해주곤 합니다.이런 서비스의 뒷편에는 System Design이라는 큰 개념이 자리 잡고 있습니다.1. System Design이란?시스템 설계(System Design)은 시스템의 여러 요소가 어떻게 상호 작용해서 기능적인 요구사항(무엇을 해야 하는지)과 비기능적인 요구사항(얼마나 잘 해야 하는지)을 모두 충족하는지를 정의하는 프로세스입니다.여기서 가장 중요한 건 확장성, 안정성, 성능 및 비용의 발란스(?)을 맞추는 아키..
👉🏻 14891번: 톱니바퀴문제 요약4개의 톱니바퀴를 명령에 맞춰 시계 또는 반시계 방향으로 회전시키는 문제회전할 때 맞닿은 톱니(3시와 9시 방향)의 극(S, N)이 다르면 맞닿은 톱니바퀴는 반대 방향으로 회전모든 회전 후, 각 톱니바퀴의 12시 방향의 극 상태를 기준으로 점수를 합산해 결과 출력풀이 코드'''23 -1 -> -1은 반시계, 3번 톱니를 반시계 방향으로 돌려라1 1''''''서로 맞물려있는 극과 배열 회전이 중요한 문제다 돌리고 나서 점수 합산을 12시 기준으로 한다는 것? N극이면 0, S면 1점(1번 톱니 기준)'''import sys; input=sys.stdin.readlinefrom collections import dequedef checking_saw(num, dir):..
·Projects/Team
1. TL;DR (어쩌면 굉장히 방대해질 글)저희 팀은 KREAM과 같은 C2C 기반 리셀 플랫폼, UNBOX를 만들었습니다. 처음에는 전형적인 Monolithic /Layered 아키텍처로 구성된 플랫폼이었습니다. 당시엔 당연하게도 사용하는 유저가 저희밖에 없었기 때문에 이 구조로도 충분히 운영은 가능했습니다. 그런데 실제 국내 KREAM이나 해외 StockX와 같은 리셀 플랫폼들을 좀 더 깊게 파보다보니 생각이 달라졌습니다.리서치해 본 결과, 리셀 플랫폼은 트래픽이 균일하게 들어오지 않았습니다. 한정판 신발이라든지 두쫀쿠(?) 같은 게 올라오면 특정 상품에 조회와 입찰이 짧은 시간에 몰리게 됩니다. 또한 해당 상품의 재고는 옵션(사이즈 270 등)당 1개라서 동시성 문제도 곧바로 거래 실패나 중복 체..
본 콘텐츠는 구름 서포터즈 활동으로 지원을 받아 작성된 교육생의 실제 경험 후기입니다.🛠️ 1개월 차에 Observability 파이프라인 구축구름 딥다이브 과정에서의 첫 한 달은 인프라와 백엔드의 근간을 이해하기 위한 뼈대 세우기 작업이었습니다. 막연하게 느껴졌던 네트워크 흐름과 클라우드 리소스들이 머릿속에서 연결되기 시작했습니다.저희는 EKS 환경에 최적화된 Prometheus로 메트릭을 수집하고, 경량화된 로그 수집을 위해 Loki를 도입했습니다. 더불어 MSA 환경에서 복잡하게 얽힌 분산 트랜잭션의 지연 시간을 추적하기 위해 Tempo를 결합하여, Grafana라는 하나의 통합 대시보드에서 시스템의 상태를 한눈에 관측할 수 있는 환경을 만들어냈습니다. 이 파이프라인을 통해 CPU 사용률, API..
본 콘텐츠는 구름 서포터즈 활동으로 지원을 받아 작성된 교육생의 실제 경험 후기입니다.🤔 데이터의 결과 말고 흐름이 궁금했던 전공생저는 데이터 사이언스를 전공했습니다. 학부 시절 내내 다양한 데이터 분석 프로젝트를 수행했고, 모델링으로 의미 있는 인사이트를 도출하는 과정은 즐거웠습니다. 하지만 졸업이 다가오고 여러 프로젝트를 마무리할 때쯤, 마음 한구석에 채워지지 않는 게 있었습니다.데이터가 어디서부터 흘러들어오는거지?항상 정제된 데이터(CSV)나 주어진 데이터셋을 가지고 분석을 시작하다 보니, 정작 서비스상에서 데이터가 생성되고, 저장되고, 분석 환경으로 넘어오기까지의 과정은 블랙박스처럼 느껴졌던 것 같습니다. 실제 현업에서는 대규모 트래픽에서 데이터가 실시간으로 쌓일 텐데, 그 데이터 파이프라인은 ..
이전 글에서 데이터 분석이 우연을 수학적으로 계산하고, 그 속의 규칙성을 찾아내는 과정이라고 언급한 적이 있습니다.이런 규칙적이고 확률적인 패턴을 구조적으로 잘 설명해주는 것이 바로 확률 분포입니다. 확률 분포는 뭔가요?확률 분포는 확률 변수가 가질 수 있는 값들과 그 값이 나타날 확률의 구조를 표현한 것입니다.말이 조금 어렵게 들릴 수 있지만, 단순하게 말하면 "이 데이터는 이런 값들이 이런 비율로 나온다"를 알려주는 지도로 보면 됩니다.이 확률 분포는 크게 2가지로 나뉩니다.이산확률분포와 연속확률분포이산확률분포는 셀 수 있는 값에 대한 분포로, 대표적으로 이항분포, 초기하분포, 포아송분포 등이 있습니다. 그리고 확률질량함수(PMF)로 표현됩니다.연속확률분포는 값이 연속적(무한히 많음)일 때 쓰이는 분..
👉🏻 14725번: 개미굴문제 정의개미굴 문제는 쉽게 말해 트리의 각 계층과 구조를 얼마나 빨리 시각화할 수 있냐! 하는 문제였습니다.예를 들어 아래와 같은 트리(개미굴)의 구조가 입력되면,A--B--CB--A--C ----D위와 같이 각 가지마다 어떤 노드가 있는지를 출력하면 되는 문제입니다.(저는 우선 이 출력 구조에서 DFS를 써야겠구나를 떠올렸습니다.)Trie결정적으로 저는 이 문제에서 Trie 자료 구조를 사용하였습니다.처음에는 인접 리스트 방식으로 트리를 표현해보려다가 경로 데이터도 함께 저장해야했기 때문에 Trie를 선택하게 되었습니다.결국 문제의 핵심은 겹치는 경로는 하나로 표현해주고, 갈라지는 부분부터 가지를 쳐줘야한다는 것이었습니다.만약에 트리가 A B C / A B D로 들어오게 ..
ReJoy
'분류 전체보기' 카테고리의 글 목록