[인턴] 같은 자물쇠를 두 트리거가 공유할 때 — 비대칭 flock으로 푼 동시성
30분마다 오는 sync webhook과 하루 한 번 도는 systemd timer가 같은 run-dbt.sh를 공유한다. 둘이 겹칠 때 누가 양보하느냐를 비대칭으로 둔 이야기. flock 한 줄을 조건부로 바꾸고, 그 조건을 한쪽에만 흘리지 않으려 며칠을 신경 쓴 기록.
30분마다 오는 sync webhook과 하루 한 번 도는 systemd timer가 같은 run-dbt.sh를 공유한다. 둘이 겹칠 때 누가 양보하느냐를 비대칭으로 둔 이야기. flock 한 줄을 조건부로 바꾸고, 그 조건을 한쪽에만 흘리지 않으려 며칠을 신경 쓴 기록.
Dagster나 Airflow 같은 오케스트레이터 없이, Go 단일 바이너리 하나로 Airbyte sync 성공과 dbt 실행을 이어 붙인 이야기. POST 한 방이 dbt까지 가닿는 경로를 따라가며, 그 과정에서 며칠씩 헤맸던 지점들을 정리했다.
abctl로 띄운 진짜 Airbyte 클러스터의 kubectl 출력을 한 줄씩 뜯어보며, Pod·Deployment·Job·Service·ReplicaSet·StatefulSet이 서로 어떻게 연결되는지, 그리고 ‘Deployment와 Job은 같은 층인가’라는 질문의 답을 Rep...
EL을 Airbyte로 옮기고 나니 dbt 모델이 읽던 raw 스키마가 달라져 있었다. Fivetran(소문자)과 Airbyte(camelCase 인용)의 컬럼 규칙, _fivetran_deleted와 _ab_cdc_deleted_at의 차이를 staging 한 겹에서 흡수하며 r...
공인망에 포트를 열지 않고 SSH 터널로만 접근하는 원칙, 짧은 수명의 API 토큰을 자동 재발급하는 함수, Merge refresh로 미달 스트림만 소탕하기, count 게이트로 진짜 적재를 판정하기까지 — 파일럿에서 실측 검증한 운영 절차를 런북으로 묶었다
33 스트림 파일럿 sync에서 만난 무단 스킵·가짜 succeeded·비대 JSON 컬럼 OOM·빈 state 전염. job status를 믿지 않고 destination count로만 판정하게 된 이유와, 대량 sync를 수렴 루프로 운영하게 된 기록
abctl(kind) + 외부 RDS 메타DB + S3 스토리지 구성으로 Airbyte OSS를 EC2에 올리는 과정. Helm 차트 V2 키 규칙, bootloader/temporal/IMDS/리소스 부족까지 실제로 밟은 함정과 그 해결을 순서대로 정리한 기록
무료로 쓰던 Fivetran을 Airbyte OSS(abctl)로 대체하기 위한 사전 테스트. 왜 옮기려 했고, MySQL→Postgres CDC 미러링을 어떻게 재현하려 했는지에 대한 설계 기록
비개발자가 agent로 코드를 만들고 개발자가 검수하는 워크플로우에서, 테스트가 자꾸 빈약해지는 문제를 마주하며 다시 정리한 테스트 작성의 기준
토요일 새벽 알람과 Summary 카드의 빈 값이라는 두 증상을 추적하다가, ECS Fargate cutover 이후 collector가 옛 TG suffix를 그대로 보고 있었음을 발견한 디버깅 기록
여기저기 흩어진 관측 지표를 비개발자도 읽을 수 있는 한 페이지로 모으기 위해, Pulumi로 S3 + Lambda(collector/builder) + EventBridge 구조를 구성한 과정을 정리
오늘 동일 stacktrace로 세 번 반복 crash한 ECS Fargate 태스크의 원인을 추적한 기록. AllExceptionsFilter가 GraphQL subscription 컨텍스트에서 Express req를 만지다가 죽는 패턴과, 빌드 산출물에서 빠진 .html 자산으...
수동 배포하던 ALB+EC2 프론트 서버를 CloudFront+S3 정적 호스팅으로 이전하고 GitHub Actions로 배포를 자동화한 과정, 그리고 Route53 IP-based Routing 카나리가 본사 네트워크에서 실패한 원인(ECS 미전달)을 추적한 기록
프로덕션 Fargate 태스크 하나가 ETIMEDOUT으로 자살한 사건을 ECS API → CloudWatch → 소스코드 순으로 역추적하며 정리한 포스트모템 기록
고정 IP가 필요한 외부 연동 환경에서 Fargate를 Private Subnet + NAT Gateway로 전환하고, 배포 실패 시 자동 롤백을 위한 Circuit Breaker를 세팅한 과정 정리
ECS on EC2에서 다시 Fargate로 방향을 틀고, ALB 가중치 대신 Source IP 기반으로 특정 지역 트래픽만 먼저 ECS로 보내는 이전 전략으로 변경한 배경과 설계 정리
PM2 + Nginx + Docker Compose 기반 백엔드를 ECS on EC2로 옮기면서, ALB 카나리 가중치로 트래픽을 점진적으로 넘기기 위해 세운 5단계 이전 전략 정리
카나리 배포 중 Blue/Green 서버가 공존할 때, 컬럼 추가·삭제·변경·제약 조건별로 Migration을 언제 실행해야 하는지 정리한 기록
EC2 + Docker Compose 구조에서 ECS Fargate로 전환하며 설계한 Blue/Green·카나리 배포 전략과 DB 스키마 변경 충돌 해법
모노레포 공통 빌드 이미지의 COPY ./ ./가 캐시를 무력화하는 구조적 원인을 파악하고, 자립형 Dockerfile과 ECR 외부 캐시로 전환한 과정
NestJS 백엔드를 ECS Fargate에 브랜치별로 자동 배포하는 Preview 환경을 구축하면서 마주친 다섯 가지 문제와 해결 과정
path-filter 기반 조건부 빌드의 치명적 약점을 발견하고, Docker 레이어 캐시를 단일 진실 공급원으로 삼아 파이프라인을 전면 재설계한 과정
GitHub Actions에서 ECR 레지스트리 기반 Docker BuildKit 캐시를 적용해 build-common 빌드 시간을 11분에서 3~4분으로 단축한 과정
모노레포에서 변경된 서비스만 선택적으로 빌드하고 ECR에 푸시하는 CI/CD 파이프라인을 GitHub Actions로 구성한 과정 기록
EC2 + nginx 환경에서 ALB 헬스체크 진단이 부정확한 원인을 분석하고, 이를 해결하기 위해 ECR + ECS로 마이그레이션한 과정 기록
spec.ts 파일 구조부터 Testing Module, Mocking, 실무 테스트 패턴까지 NestJS 백엔드 단위 테스트의 모든 것
.env는 값 주입, environments/*.ts는 검증·변환·캐싱을 담당하는 이유를 실무 관점에서 정리한 글
Datadog의 Metrics, Logs, APM, Dashboard, Monitor를 실제 업무에서 어떻게 활용했는지 정리한 기록
NestJS의 모듈 시스템을 활용해 @Injectable 서비스에 기본 설정을 주입하는 구조로 개선한 기록
운영 에러를 신호 중심으로 분류해 대응 우선순위를 정리한 기록
기존의 naive한 에러 알람 방식의 고도화 진행을 위한 기획
Pulumi의 config 기반 다중 stack yaml 기반 매개변수 관리 및 기존 AWS 리소스 풀링을 설명.
Pulumi의 상태 관리 단위인 Stack의 관리 및 다중 Stack의 기초적인 관리 방식을 설명.
기본 템플릿에 포함되어 있던 SSM·CloudWatch Agent 구성을 분리하고, Pulumi 코드를 기능별 디렉토리로 재구성한 과정을 정리합니다.
AWS CloudWatch 메트릭 수집부터 대시보드 구성, Slack 알람 연동까지 Pulumi IaC로 구현하는 전 과정을 정리합니다.
EC2 인스턴스에 기본으로 제공되는 AWS/EC2 네임스페이스 CloudWatch 메트릭 18개를 카테고리별로 정리합니다.
다양한 로그·메트릭 수집 도구를 비교 정리하고, NestJS 백엔드에서 실제로 활용하기 좋은 조합을 소개합니다.
인턴십 기간동안 진행하게 될 내용의 요약입니다.
DDIA 03~04장의 스터디 내용 입니다.
AutoResearch가 연구 자동화 전체를 조망한 ‘지도’였다면, AutoSurvey는 그 지도 위에서 실제로 돌아가는 한 점이다. 서베이 논문을 쓰는 일이 왜 그렇게 어려운지(컨텍스트 한계·환각 인용·평가 부재)를 짚고, 그 세 문제에 병렬 생성·RAG·Multi-LLM 평가라...
PaperCoder가 ‘논문 하나를 코드로 옮기는’ 한 시스템이었다면, 이번 서베이는 시야를 통째로 넓힌다. 문헌 조사부터 보고까지 이어지는 연구 워크플로우를 다섯 단계로 나누고, 자동화의 정도를 L0~L4 자율성 스펙트럼으로 재고, 그 결과물을 novelty·validity·im...
PaperCoder가 만든 레포는 실제로 얼마나 쓸 만한가. 새로 만든 Paper2CodeBench와 PaperBench Code-Dev에서의 정량 결과, 논문 저자가 직접 매긴 사람 평가, 그리고 ‘생성된 레포를 돌리는 데 평균 0.81%의 라인만 고치면 됐다’는 실행 가능성 분...
planning → analysis → coding. PaperCoder가 논문 한 편을 코드 레포로 바꾸는 과정을 단계별로 뜯는다. planning의 네 하위 단계(overall plan·architecture design·logic design·configuration), 파일...
머신러닝 논문 대부분은 코드가 없다. 그 논문 하나만 보고, 사전 구현·API·스켈레톤 없이 동작하는 코드 레포를 만들어 낼 수 있을까. PaperCoder가 던진 이 질문과, planning·analysis·coding 세 단계로 답한 큰 그림을 Abstract와 Introduc...
고려대학교 컴퓨터 보안 연구실 학부 인턴 회고 내용 입니다.
04장(Encoding and Evolution) 딥다이브: 호환성 모델, 스키마 진화 규칙, 포맷별 함정(JSON/Protobuf/Avro), 데이터플로우(DB/RPC/메시지)에서 안전하게 굴리는 법
03장(Storage and Retrieval)에서 저장 엔진의 내부 동작을 더 깊게 파고들기: 레코드 포맷, 컴팩션, SSTable, WAL, 증폭, 컬럼 압축
04장: 부호화와 발전
03장: 저장소와 검색
02장: 데이터 모델과 질의 언어
01장: 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션
Placement 면접에 대한 복기 내용 입니다.
ICT 면접에 대한 복기 내용 입니다.
Placement 면접에 대한 복기 내용 입니다.
서울 영커리언스 면접에 대한 복기 내용 입니다.
CS224N 3강 - Window 기반 분류, 2-layer Neural Network, Backpropagation, 그리고 Matrix Calculus 핵심 정리
CS224N 2강 - Word2Vec 최적화, GloVe, 동시 출현 행렬, 그리고 단어 임베딩 평가 방법
CS224N 1강 - NLP 소개 및 Word2Vec을 통한 단어 벡터 표현 학습
CUAI 중앙대학교 AI 학회 CS224N 스터디 소개 및 진행 일정입니다.
03장: 우수한 데이터 아키텍쳐 설계
02장: 데이터 엔지니어링 수명 주기
01장: 데이터 엔지니어링 상세
클라우드/가상화/AWS 구조/계정·프리티어/IAM/인증을 정리
AWS를 쓰기 전에 알아두면 좋은 네트워크/보안/DB 기초 개념을 한 번에 정리
2025년 KT 디지털인재 장학생 합격 후기와 면접 준비 팁, 자기소개서 작성 전략을 공유합니다.
Transformer와 Self-Attention의 핵심 알고리즘/수식 정리