1. 배경 기존 서비스에서 신규 서비스로의 회원 데이터 이관을 위해, 이벤트 기반 아키텍처를 도입하였다. 회원이 처음 신규 시스템에 접근하고 이관에 동의하면, 회원 서비스는 MemberMigrated 이벤트를 발행한다. 이 이벤트를 트리거로 데이터 이관이 비동기적으로 수행되는 구조를 설계하였다.2. 초기 설계 초기에는 다음과 같은 구조를 사용하였다.Kafka Consumer가 MemberMigrated 이벤트를 수신내부 API 호출API는 즉시 202 Accepted 응답 반환실제 데이터 migration은 비동기로 수행migration 완료 후 migrationDone 이벤트 발행이벤트 기반이며, 데이터 마이그레이션이 필요하므로 API 응답을 항상 빠르게 처리하고 비동기적으로 데이터 마이그레이션을 처리..
전체 글
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.외부 SaaS와 우리 서비스를 연동하는 개발을 하면서 가장 많이 마주친 개념은 인증과 인가였다. 이번 글에서는 SSO, JWT, 그리고 인증/인가가 실제 요청 흐름에서 어떻게 연결되는지 정리해보려고 한다.1.인증 (Authentication) 이란“너 누구야?” 라고 사용자가 누군지 확인하는 단계이다. 즉, 요청을 보낸 주체가 누구인지 식별하고, 그 신원이 유효한지 검증하는 단계다.아이디 / 패스워드로 로그인Google, Kakao 등을 통한 소셜 로그인회사 SSO 를 통한 로그인인증이 끝나면 서버는 “이 사용자가 누구인지”는 알 수 있다. 하지만 그 사용자가 어떤 기능까지 수행할 수 있는지는 아직 알 수 없다.2.인가 (Authorization)인가 라는 것은 “너 이거 해도 돼?” 를 확인하는 과정이..
2025. Q1MSP 프로젝트 > Databricks MLOps 운영 프로젝트 MSP 프로젝트 특성상 클라우드 벤더(Azure) 서비스 의존도가 높았고 신규 개발보다는 운영/지원 중심 역할로 투입되었다. 실제 업무는 운영이라기보다 고객사 엔지니어 대상 Databricks 교육이 주가 되었음기존 MLOps 환경은 아래의 문제점을 가지고 있었다. 사실 MLOps 라고 말할 수가 없을 정도였다.ML 엔지니어 수동으로 실행해야 하는 부분이 많았음exe + Windows 스케줄러 기반파이프라인 가시성/운영성 부족MLOps 현대화(Azure Data Pipeline + Databricks) 개선우선 기존의 방식이 너무 비효율적이라고 생각. 처음으로 운영 환경을 경험해보는 건데, 나의 주된 role은 교육/지원이었..
·개발일기
2025년 12월 31일, 벌써 올해도 두시간 채 남지 않았다. 오랜만에 이런 특별한 날에 약속이 없어서 혼자 회고 하는 시간을 가지며 올 한해를 마무리해보려고 한다. 1. GPT 에게 부탁한 나의 회고 2025년 회고 — 흔들리면서도 분명히 앞으로 간 해2025년의 나는, 한 문장으로 말하면**“불안해도 멈추지 않았고, 확신이 없어도 계속 쌓아 올린 사람”**이었다.1. 커리어: 방향을 다시 잡은 해올해의 가장 큰 키워드는 단연 전환이었다.SI 중심의 경험, Databricks 위주의 커리어, “이게 과연 서비스 회사에서 의미가 있을까?”라는 질문.그리고 실제 면접 탈락.솔직히 말하면, 흔들렸다.“내가 쌓아온 것들이 잘못된 건가?”“다시 처음부터 배워야 하나?”이 질문들이 꽤 오래 머물렀다.하지만 인상..
분산 메시지 큐1. 메시지 모델1. point-to-point model : 전통적인 메시지 큐. 큐에 전송된 메시지는 한 소비자만 가져갈 수 있음. 메시지를 가져갔다는 뜻으로 ACK 를 보내면, 큐에서 해당 메시지가 삭제됨. 2. publish-subscribe model : 토픽에 메세지를 보내고 토픽으로부터 메세지를 받음. 메세지는 해당 토픽을 구독하는 모든 소비자들에게 전달됨. 메세지는 토픽에 보관됨. 토픽을 여러 파티션으로 나눠서, 메시지를 균등하게 각각의 파티션에 보내어 분산 배치함. 2. 문제의 설계 요구 조건 메세지 큐의 기본 조건 : 생산자는 메시지를 큐에 보내고, 소비자는 큐에서 메시지를 꺼낼 수 있어야 한다. 기본 기능 외에도 성능, 메시지 전달 방식, 데이터 보관 기간 등을 고려해야..
Intro 비즈니스는 오래 가고, 기술은 자주 바뀐다데이터 엔지니어에서 백엔드 엔지니어로 전향하면서, 코드로 해결해야 하는 문제가 훨씬 더 많아졌다. 지금은 MAU가 꽤 나오는 글로벌 이커머스 백엔드를 만들고 있다. 트래픽도, 요구사항도, 의존하는 외부 시스템도 많다 보니 코드베이스는 빠르게 커지고 복잡도도 함께 증가한다.그래서 단순히 “기능을 구현하는 방법”이 아니라, 유지보수와 확장에 강한 구조를 더 진지하게 공부해야겠다고 느꼈다. 이 글에서는 현재 실무에서 백엔드 개발에서 자주 사용중인 Usecase 패턴을 중심으로, 실제 이커머스 도메인에서 어떻게 적용할 수 있는지 정리해보려 한다. 전통적인 Controller–Service–Repository 구조의 한계전통적인 Backend pattern 은 ..
SI(시스템 통합) 경력을 만 2년 채우고 운 좋게 인하우스 개발 부서로 이동한 지 한 달 만에, 결국 이직을 결심하게 되었습니다. 사실 저는 정말 많이 떨어져 봤고, 이번에 처음으로 최종 합격이라는 결과를 받았습니다. 그동안 스스로를 의심하고, 초조하고 불안해하기도 했지만, 꾸준히 준비해서 원하는 결과를 만들어냈습니다. 이 글은 저의 이직 준비 과정을 회고하며, 같은 고민을 하는 누군가에게 조금이나마 도움이 되었으면 하는 마음으로 작성합니다.1. 이직을 결심한 사유1) (상대적으로) 더 보상체계가 훌륭한 곳을 가고 싶어서2) 서비스 회사에서의 경험을 쌓고 싶어서SI 특성상 너무 빠르게 바뀌는 프로젝트 환경, 사람, 그리고 운영 및 유지보수 경험이 적었습니다.SI 회사에서 서비스 회사로 이직하고 싶다는 ..
정렬 알고리즘이 중요한 이유많은 알고리즘에서 정렬은 필수 전처리 단계로 사용된다. 정렬된 데이터는 이진 탐색처럼 빠른 탐색 알고리즘을 사용할 수 있다. 사람이나 시스템이 데이터를 해석하기 더 쉬워진다. ex. 시간순 , 크기 순, 알파벳 순정렬을 통해서 중복된 값들을 모아 놓을 수 있으므로, 효율적으로 중복 제거를 할 수 있으며 그룹 처리에 유리하다. 버블 정렬 Bubble Sort버블 정렬은 한번 순회할때 정렬되지 않은 값들중에서 가장 큰 값을 찾아서 맨 뒤로 보낸다. 맨 첫번째 정렬 시도에서는 가장 큰 값을 찾아서 배열의 맨 뒤로 보내고, 두번째 정렬시도에서는 두번째로 큰 값을 찾아서 맨 뒤에서 두번째로 보낸다. 1. 공간 복잡도 : O(1)별도의 추가 공간 없이 주어진 배열 안에서 크기 비교와 s..
