썸네일 파이썬 Lambda, concurrent.futures로 S3 I/O 성능 5배 높이기 S3 경로에 있는 파일 조회 API를 개발하면서 로그를 살펴보니, 겨우 3개의 파일이 있는데 조회 시간이 4.5초가 걸렸다. 로그를 다시 잘 살펴보니, S3에서 파일 목록을 가져오는 `s3.list_objects_v2` 호출(약 0.7초)은 빠르지만, 이후 각 파일의 내용을 s3.get_obj로 하나씩 가져오는 부분에서 시간이 누적되고 있었다.파일 1: 0.07초파일 2: 1.36초파일 3: 2.46초 총 4.5초 중 4초 이상이 3개의 파일을 순차적으로 다운로드하는 데 소요되었다. 이 문제는 S3로부터 데이터를 기다리는 I/O 대기 시간이 원인이라서 이전에 개발해둔 코드를 리팩토링하기로 하였다. → 대기 시간 동안 다른 파일도 함께 다운로드하도록 멀티스레딩(Multithreading)을 적용하기 imp..
썸네일 AWS Lambda에서 event와 body 객체 개념 🧩 AWS Lambda에서 event와 body를 완벽히 이해하기AWS Lambda를 처음 다루면 가장 많이 헷갈리는 부분이 바로 이겁니다.“왜 body가 문자열이어야 하지? 그냥 JSON 객체로 넘기면 안 되나?”이번 글에서는 그 이유를 단계별로 풀어보겠습니다.1️⃣ event 객체란 무엇인가?람다 함수가 실행될 때, AWS가 함수에 넘겨주는 ‘요청서’ 같은 것이 바로 event 객체입니다.def handler(event, context): ...이 event 안에는 누가, 어떤 경로로, 어떤 데이터를 보냈는지에 대한 모든 정보가 담겨 있습니다.즉, event는 “람다에게 전달된 HTTP 요청의 전체 구조”라고 생각하면 됩니다.📦 예시: API Gateway가 전달하는 event{ "path..
썸네일 S3란 무엇인가? 버킷(Bucket), 객체(Object), 키(Key) 개념 1. Bucket (버킷) 🗄️: "나만의 창고 건물"비유: 물건을 보관하기 위해 임대한 '창고 건물' 그 자체입니다.설명: S3에 파일을 저장하기 위해 가장 먼저 만들어야 하는 최상위 보관함입니다. 모든 파일(객체)은 반드시 이 '버킷' 안에 저장되어야 합니다.핵심 규칙:전 세계에서 유일한 이름: 버킷 이름은 전 세계 모든 S3 사용자를 통틀어 중복될 수 없습니다. (마치 인터넷 도메인 주소나 이메일 주소처럼요.)모든 것의 시작: S3에 무언가를 저장하려면, 최소 1개의 버킷이 있어야 합니다.예시: my-unique-blog-assets-20252. Object (객체) 📦: "창고에 넣는 '물건 상자'"비유: 창고 안에 보관하는 '물건이 든 상자'입니다.설명: S3에 저장되는 데이터의 기본 단위입..
썸네일 S3는 왜 '폴더' 대신 'Key'를 선택했나? (Object Storage의 핵심) S3를 사용하다 보면 "S3는 사실 폴더 구조가 없다"는 말을 듣고 당황할 때가 있습니다.분명히 S3 콘솔에서는 폴더를 만들고 파일을 넣고 있는데, 이게 무슨 뜻일까요?이 개념은 S3를 효율적으로 사용하고, 특히 파일 목록을 다루는 API를 개발할 때 예상치 못한 버그를 피하는 데 매우 중요합니다.이 글에서는 S3의 '가상 폴더' 개념과, 이를 제어하는 핵심 기능인 Delimiter에 대해 확실하게 정리해 드립니다.1. 근본적인 차이: '계층형' vs '평면형'우리가 S3의 폴더를 헷갈리는 이유는 S3의 저장 방식이 우리에게 익숙한 PC의 파일 시스템과 근본적으로 다르기 때문입니다.🔹 PC의 파일 시스템 (계층형)윈도우나 macOS는 '폴더'라는 실제 '상자'가 존재하는 방식입니다.C: 드라이브 안에 ..
썸네일 모달창 구현을 위한 백엔드 API 설계 모달창(Modal) 요약모달창은 현재 페이지 위에 표시되는 작은 창으로, 사용자의 주의를 특정 콘텐츠나 작업에 집중시키는 데 사용됩니다.모달창이 활성화되면 배경 페이지는 비활성화되어 상호작용할 수 없습니다. 주요 특징사용자 집중 유도: 배경을 어둡게 처리하여 사용자의 시선을 모달창으로 유도합니다.배경 상호작용 차단: 모달창이 열려 있는 동안에는 원래 페이지의 다른 기능을 사용할 수 없습니다.페이지 전환 없는 정보 제공: 페이지를 떠나지 않고도 상세 정보나 약관 등을 보여줄 수 있습니다.간단한 상호작용: 로그인, 회원가입, 알림 등 간단한 사용자 입력이나 확인에 효과적입니다. 팝업창과의 차이점모달창: 현재 브라우저 창 내에서 새로운 레이어를 띄웁니다.팝업창: 브라우저 자체에서 완전히 새로운 창을 띄우며, ..
썸네일 [DB 기초] COMMIT, ROLLBACK? 은행처럼 안전한 데이터 처리를 위한 트랜잭션(Transaction) 개념 [DB 기초] COMMIT, ROLLBACK? 은행처럼 안전한 데이터 처리를 위한 트랜잭션(Transaction) 개념데이터베이스 작업을 하다 보면 "트랜잭션(Transaction)"이라는 단어를 자주 듣게 됩니다. 단순히 데이터를 INSERT하고 UPDATE하는 것과는 조금 다른, 중요한 개념인데요. 오늘은 이 트랜잭션이 무엇인지, 그리고 COMMIT과 ROLLBACK은 언제 어떻게 사용되는지 알아보겠습니다.트랜잭션(Transaction)이란? 🏦트랜잭션은 하나의 논리적인 작업 단위로 묶인 일련의 데이터베이스 연산(SQL 쿼리)들을 의미합니다.가장 쉬운 예시는 은행의 계좌 이체입니다. A가 B에게 10,000원을 보낸다고 상상해 보세요. 이 과정은 데이터베이스에서 다음과 같이 두 단계로 이루어집니다...
썸네일 SQL과 데이터베이스: 스키마와 테이블 기초 개념 정리 데이터베이스(DB) 기본 개념 및 스키마데이터베이스는 단순히 데이터를 저장하는 곳을 넘어, 체계적으로 데이터를 관리하고, 효율적으로 접근하며, 필요한 정보를 추출할 수 있도록 돕는 시스템입니다.1. 데이터베이스(Database)란?데이터베이스(DB)는 체계적으로 조직화된 데이터의 집합입니다. 단순히 파일 형태로 저장하는 것을 넘어, 특정 규칙과 구조에 따라 데이터를 저장하고 관리하며, 필요할 때 빠르게 검색, 수정, 삭제할 수 있도록 돕는 시스템입니다.예를 들어, 쇼핑몰의 데이터베이스에는 고객 정보, 상품 정보, 주문 정보 등이 서로 연결되어 저장될 수 있습니다.데이터베이스를 사용하는 이유:데이터의 효율적인 저장 및 관리: 방대한 데이터를 구조화하여 저장하고, 일관성을 유지할 수 있습니다.데이터 중복 최..
썸네일 빅데이터 시대의 데이터 처리 수많은 컴퓨터에 데이터 처리를 분산하기 위해서는 전체 실행 과정을 체계적으로 관리하는 프레임워크가 필수적입니다. 이 페이지에서는 빅데이터가 어떻게 수집되고, 다양한 형태로 분류되며, 효율적인 분석을 위해 어떻게 구조화되는지 그 여정을 탐색합니다.데이터의 세 가지 얼굴구조화된 데이터스키마(Schema)가 명확하게 정의된 데이터입니다. 관계형 데이터베이스의 테이블처럼 행과 열로 구성되어 SQL을 통해 쉽게 집계하고 분석할 수 있습니다.비구조화 데이터텍스트, 이미지, 동영상처럼 정해진 스키마가 없는 데이터입니다. 형태가 자유로워 그대로는 SQL로 집계하기 어렵습니다.스키마리스 데이터CSV, JSON, XML 등 서식은 있지만, 칼럼 수나 데이터 유형이 고정되지 않은 유연한 구조의 데이터입니다. 반정형 데이터라..
썸네일 모델 컨텍스트 프로토콜 (MCP, Model Context Protocol) 모델 컨텍스트 프로토콜 (MCP) 내용 요약AI가 세상과 '대화'하는 표준 방식, MCP에 오신 것을 환영합니다.스마트폰 충전기가 USB-C로 통일되어 편리해진 것처럼, MCP는 AI 모델과 외부 시스템이 서로 쉽게 연결되고 데이터를 주고받을 수 있도록 만든 개방형 표준 통신 규약입니다. AI 회사 '앤트로픽(Anthropic)'이 개발했고, 구글, OpenAI 등 주요 기업들이 채택하며 AI 업계의 중요한 표준으로 자리 잡고 있습니다.MCP는 왜 필요할까요?AI는 똑똑하지만, 혼자서는 세상의 모든 실시간 정보에 접근할 수 없습니다.MCP는 어떻게 작동할까요?MCP는 '호스트'와 '서버'라는 두 주체가 서로 통신하는 규칙입니다.호스트란?외부 데이터나 기능이 필요한 AI 주체입니다. 사용자의 질문에 답하기..
썸네일 Git: cannot checkout branch - error: pathspec '...' did not match any file(s) known to git 이 에러는 Git에서 브랜치를 체크아웃할 때 자주 발생하는 문제입니다.출처: https://stackoverflow.com/questions/5989592/git-cannot-checkout-branch-error-pathspec-did-not-match-any-files-kn현상과 원인 분석에러 메시지error: pathspec 'branch_name' did not match any file(s) known to git발생 원인1. 로컬-원격 저장소 동기화 문제 (가장 일반적)로컬 저장소의 git 정보와 원격 저장소의 git 정보가 동기화되지 않음[1][2]다른 개발자가 새로운 브랜치를 원격에 생성했지만, 본인의 로컬에는 아직 업데이트되지 않은 상태2. 브랜치 이름 오타 또는 존재하지 않는 브랜치브랜..
썸네일 Git 커밋 메시지 작성에 대한 일반적인 규칙과 컨벤션 Git 커밋 메시지 작성에 대한 일반적인 규칙과 컨벤션에 대한 정리입니다.잘 작성된 커밋 메시지는 프로젝트의 히스토리를 깔끔하게 관리하고, 다른 팀원들이 변경 사항을 쉽게 이해하도록 돕는 중요한 역할을 합니다.좋은 커밋 메시지의 7가지 규칙제목과 본문을 빈 줄로 구분하기첫 줄은 제목(subject), 그 다음 빈 줄을 두고 본문(body)을 작성하는 것이 일반적입니다.제목은 50자 이내로 작성하기제목은 간결하게 핵심 내용을 담아야 합니다. 50자를 넘어가면 가독성이 떨어지므로, 너무 길게 작성하지 않도록 주의해야 합니다.제목 첫 글자는 대문자로 시작하기예: Fix: Add missing feature (O)예: fix: add missing feature (X)제목 끝에 마침표를 찍지 않기제목은 짧은 문..
썸네일 fatal: Need to specify how to reconcile divergent branches. 1. git 안내 메시지fatal: Need to specify how to reconcile divergent branches.이 메시지의 핵심은 "Divergent branches" (분기된 브랜치) 입니다.쉽게 말해, 로컬 저장소(내 컴퓨터)의 커밋(작업 내용)과 원격 저장소(GitHub 등)의 커밋이 서로 다른 방향으로 진행되어 역사가 갈라졌다는 의미입니다.이런 상황은 보통 다음과 같을 때 발생합니다.내가 로컬에서 git commit으로 작업을 완료했습니다.하지만 git push로 원격에 올리기 전에, 다른 팀원(또는 내가 다른 컴퓨터에서)이 원격 저장소에 새로운 내용을 push 했습니다.이 상태에서 내가 git pull을 실행하면, Git은 원격의 새로운 내용과 내 로컬의 새로운 내용을 어떻게 ..