본문 바로가기

전체 글400

[AWS] AWS Code 시리즈와 SAM에 대해 (CodeCommit, CodeBuild, CodeDeploy, CodePipeline · SAM) 프로젝트를 진행하면서, Lambda 코드를 수정하는 것보다 더 중요했던 것은 배포 체계를 정리하는 작업이었다.49개에 가까운 Lambda를 수동으로 콘솔에서 수정하는 방식은 운영 환경에서는 지속 가능하지 않다. 그래서 이번 프로젝트에서는 AWS Code 시리즈와 SAM(Serverless Application Model)을 기반으로,CI/CD + IaC(Infrastructure as Code) 구조를 구성했다. ※ 2024년 7월에 AWS가 CodeCommit 서비스를 점차 종료한다 공식적으로 밝혔지만, 여러 고객들이 다시 되돌리라는 피드백을 많이 주어서 2025년 11월에 다시 정식 서비스로 전환한다 발표했다 ㅎㅎhttps://aws.amazon.com/ko/blogs/korea/aws-codeco.. 2026. 2. 20.
[SW 아키텍처] 클라우드 기반 데이터 플랫폼 아키텍처 정리 (Snowflake, Redshift · SageMaker · Tableau) 데이터 엔지니어링 프로젝트를 하면서 가장 크게 느낀 점은, 데이터 플랫폼은 단일 기술로 완성되지 않는다는 사실이다. 이 프로젝트에는데이터 저장소,분석을 위한 DW,예측 모델을 위한 ML 환경,그리고 최종 결과를 보여주는 BI 툴까지여러 성격의 서비스들이 함께 사용되었다. Snowflake, Amazon Redshift, Amazon SageMaker, Tableau가 각각 어떤 위치에서 어떤 역할을 했는지 정리해 보려 한다.Snowflake – 클라우드 기반 DW Snowflake는 클라우드 기반 데이터 웨어하우스로, 대용량 데이터를 빠르게 분석하기에 매우 강력한 도구이다. Snowflake의 특징스토리지와 컴퓨팅이 분리된 구조뛰어난 확장성SQL 기반 분석에 최적화이 프로젝트에서는 AS-IS가 수집된 데.. 2026. 2. 20.
[SW 아키텍처] 데이터 엔지니어링/파이프라인 구조 (L0 · L1 · L2 및 ETL) L0 · L1 · L2와 ETL에 대한 이해난 “데이터 엔지니어링/파이프라인”이라는 말을 들어보기만 했었는데, 이번 프로젝트에서 L0, L1, L2 구조와 ETL을 실제로 다루면서 비로소 데이터 파이프라인이라는 것이 단순한 이론이 아니라 운영을 전제로 한 설계라는 걸 체감하게 되었다. 실제 프로젝트에서 경험해보니"수집 → 처리 → 저장 → 활용" 이 흐름이 머릿속에 확실히 잡히게 되었다. L0 – Data Lake : 수집한 Raw 데이터를 그대로 담는 공간L0는 Data Lake(DL) 단계이다.이 단계의 핵심은 아주 단순하다.“절대 가공하지 않는다.” L0의 역할외부 시스템(API, SFTP 등)에서 받은 데이터를 그대로 저장포맷 변환, 정제, 집계 없음원본 보존이 최우선 목적L0는 분석을 위한 공.. 2026. 2. 19.
[AWS] Lambda, CloudWatch, Step Functions, EventBridge, Secrets Manager 와 친해지기 실제 내가 프로젝트에서 사용했던 AWS 구성 요소들을 기준으로, AWS Lambda, CloudWatch, Step Functions, EventBridge, Secrets Manager가 각각 어떤 힘을 갖고 있는지 정리하려 한다. 1. AWS Lambda: AWS가 빌려주는 함수 단위 서비스 (서버리스 함수) Lambda는 사실상 모든 작업의 시작점이자 끝점이다.프로젝트에서 Lambda의 역할외부 데이터 소스(API, FTP 등)로부터 데이터 수집수집된 데이터 전처리 및 포맷 변환Redshift DB에 따른 SQL 로직S3 적재 및 후속 Step Function 트리거외부 시스템(API)으로 데이터 전송즉, Lambda는 “서버리스 함수”라는 개념보다는 프로젝트 전체 구조의 최소 실행 단위로 이해하는.. 2026. 2. 19.
[삽질썰] 소프트파워인 줄 알고 갔다가 숏츠 찍고 온 개발자의 3일 때는 내가 대학생이던 한창 대외활동에 미쳐 있던 2023년뭐라도 하나 더 해보겠다고 여기저기 지원서를 넣던 시기였다. 그러던 중 눈에 들어온 이름 하나.제17회 소프트파워 컨퍼런스 (by sm-pair) 소프트파워?어디서 많이 듣던 단어다.당연히 나는 이렇게 생각했다.> 아 소프트웨어 + 파워 = 개발 컨퍼런스겠네 ㅎㅎ그래서 설명도 제대로 안 읽고“일단 넣고 보자” 마인드로 무작정 지원하고 합격..!그리고 첫날, 현장에 도착했다.이상하다… 왜 노트북이 안 보이지?주변을 둘러보는데 뭔가 이상했다.- 맥북 : X- IDE : X- 개발 얘기 : X대신 보이는 것들:- 기획서 : O- 마케팅 용어 : O- 브랜딩 : O- 그리고.. "문과들만 있음"그때 깨달았다.> 이 소프트파워는 내가 아는 소프트웨어가 아니.. 2025. 12. 24.
[웹 개발] Assistant API 에서 thread_id 문맥 관리 시 주의사항 및 대응 방안들 (동일한 Thread에서 여러 파일을 연속으로 업로드했을 경우) 데이터 분석 채팅방 BE를 개발하면서 겪은 경험을 공유하고자 한다. Azure OpenAI의 Assistant API와 Code Interpreter를 활용하여 사용자가 CSV/Excel 파일을 업로드하면 자동으로 데이터를 분석하고 시각화 차트를 생성하는 서비스를 구축했다. 이 과정에서 발견한 예상치 못한 문제를 공유하려 한다. 주의해야 할 점: Thread 내 파일 컨텍스트 문제동일한 Thread에서 여러 파일을 연속으로 업로드하면 Azure Assistant가 파일을 혼동하는 현상이 발생한다. 문제 상황Thread A (오래된 대화)├── Message 1 + File_old_1.csv├── Message 2 + File_old_2.csv├── ... (여러 대화)└── Message N + .. 2025. 12. 9.
[웹 개발] Completion API에서 Assistant API로의 리팩토링 (w/AOAI) 이미 돌아가고 있는 서비스의 한가운데에 들어간다는 건, 코드를 읽는 것보다 “맥락을 이해하는 일”이 훨씬 어렵다는 걸 다시 한번 느끼고 있다. 생성형 AI 플랫폼 프로젝트에 중간 투입되었고, 내가 맡은 주요 태스크는 데이터 분석 채팅방의 BE 개발이다.이 과정에서 Azure OpenAI의 코드 인터프리터 툴을 함께 도입해야 했고, 단순한 모델 교체 이상의 고려가 필요했다. 기존 구조 — Completion API 기반처음 코드를 봤을 때, 기존 v3는 OpenAI의 ChatCompletion API를 사용하고 있었다.이 방식은 우리가 흔히 GPT-3.5나 GPT-4를 쓸 때 호출하던 전통적인 API다.이 API의 특징은 “컨텍스트가 자동으로 유지되지 않는다”는 점이다.즉, 이전 대화 내용을 모델이 기.. 2025. 10. 30.
[CI-CD] GitHub Actions과 GitHub Secrets 개념 CI-CD는 이런 관점에서 생기게 되었다“코드를 푸시했는데 자동으로 테스트가 돌아가고, 빌드가 끝난 뒤 배포까지 된다면 얼마나 좋을까?”이런 자동화를 가능하게 하는 도구 중에서 가장 보편적이고 가장 쉬운 툴이 바로 GitHub Actions이다. ㅁGitHub Actions: GitHub 레포지토리 안에서 자동화된 워크플로우를 구성할 수 있는 CI/CD 도구 CI: Continuous Integration(지속적 통합)CD: Continuous Deployment(지속적 배포)즉, 코드 변경이 발생할 때마다 자동으로 빌드·테스트·배포를 수행하도록 설정할 수 있는 시스템이다. GitHub Actions는 workflow파일(.yml 형식)을 기반으로 작동한다. e.g. backend-cicd.yaml.. 2025. 10. 16.
[데이터베이스] DB 커넥션 풀(Connection Pool)의 의미 웹 애플리케이션을 만들다 보면, 데이터베이스(DB)와의 연결이 생각보다 비싼 자원이라는 사실을 체감하게 된다.특히 트래픽이 몰릴 때 “DB 연결 에러”나 “Connection timeout” 같은 문구를 한 번쯤은 본 적 있을 것이다.이런 문제를 해결하기 위한 핵심 개념이 바로 DB 커넥션 풀(Connection Pool)이다. 일단 먼저 커넥션(Connection)이란?애플리케이션이 DB에 접근하려면, 먼저 네트워크를 통해 DB 서버와 연결(Connection)을 맺어야 한다.이 연결을 생성하는 과정은 단순히 “접속” 이상의 비용이 든다.TCP/IP 소켓 연결인증 절차 (ID/PW 확인)세션 초기화이 모든 과정이 한 번의 쿼리를 실행하기 위해 매번 일어나면, 성능은 크게 떨어진다.그래서 보통 DB 연.. 2025. 10. 13.