본문 바로가기

분류 전체보기

(51)
HTTP 헤더에서 Content-Length가 필요한 이유에 대해 생각해보자 HTTP Content-Length 헤더, 왜 필요하고 언제 사용될까?HTTP 통신을 디버깅하거나 성능을 분석할 때 응답 헤더를 살펴보는 것은 웹 개발자에게 익숙한 일이다. 이때 자주 등장하는 Content-Type 헤더는 브라우저가 리소스를 올바르게 해석하도록 돕는다는 것을 직관적으로 이해할 수 있다. 하지만 Content-Length 헤더는 그 역할이 명확하지 않을 수 있다. "어차피 헤더 다음부터는 쭉 본문일 텐데, 굳이 길이를 미리 알려줘야 할까?"라는 의문이 들 수 있다. 이 글은 Content-Length 헤더가 왜 중요한지, 그리고 어떤 상황에서 사용되는지 HTTP 명세(RFC)와 함께 자세히 알아본다. 특히, Content-Length의 중요한 대안이자 상호 보완적인 역할을 하는 Trans..
'PK를 업무와 관련된 키로 설정하는 것이 좋을까' 에 대한 고민 제목: 'PK를 업무와 관련된 키로 설정하는 것이 좋을까' 에 대한 고민 InnoDB 스토리지 엔진에서는 클러스터링 인덱스를 사용하기 때문에 PK(Primary Key)의 선택이 개발하는 서비스의 성능에 전반적으로 중요한 영향을 미친다. 일반적으로 AUTO_INCREMENT 컬럼을 사용해 별도의 surrogate key를 PK로 사용하는 경우가 많지만, 업무적으로 의미가 있는 컬럼을 PK로 설정하는 것이 더 효율적인 경우가 많다고 알려져 있다. 널리 알려져 있는 것과는 별개로, 어떤 경우에 우리가 업무 도메인에서 해당 키를 PK로 설정했을 때 이득을 볼 수 있는지는 또 별개의 문제라고 생각한다. 그래서 약간의 케이스들을 찾거나 고민해본 뒤 정리해보기로 하였다. [업무 관련 PK를 사용하는 것이 좋은 경우..
순차 PK vs. UUID: InnoDB 클러스터링 인덱스와 복제 전략 InnoDB에서는 클러스터링 인덱스(B+-트리) 구조를 사용한다. 즉, 테이블 전체가 하나의 거대한 인덱스로 관리되며, 리프 페이지에 PK 순으로 정렬된 실제 레코드가 저장된다. 덕분에 PK 기준 검색(SELECT)에선 압도적으로 빠르고, 특히 범위 스캔이 물리적 순서대로 일어나니 디스크·버퍼 캐시 효율까지 챙길 수 있다. 단점도 있다. 세컨더리 인덱스(=비클러스터드 인덱스)는 리프 노드에 PK 값만 들고 있기 때문에, '세컨더리 인덱스 → PK → 실제 레코드'라는 두 번의 lookup이 필연적이다. 또한 PK 값이 수정되거나 랜덤하게 삽입·삭제될 경우 페이지 split이 잦아지고, 그만큼 I/O 및 잠금 비용이 늘어난다. 그래서 MySQL 8.0 이상의 InnoDB에선 순차적으로 증가하는 AUTO_I..
데이터베이스에 나오는 CASCADE란 단어는 무슨 뜻일까요? (+ FK와 참조 무결성) 영어가 모국어가 아닌 개발자는 항상 새로운 용어의 어원을 쫓아가는 것이 중요한 것 같다. CASCADE가 작은 폭포, 폭포처럼 흐르다라는 뜻인 걸 알게되면 대략적으로 왜 그런 이름을 사용했을지 조금이나마 추측이 가능하게 되고 다음번에 보게 되었을 때도 떠올리기 쉬워진다.. (한국어로 코딩을 한다면 어떤 기분일까?) 데이터베이스에서 사용되는 CASCADE라는 용어는 관계형 데이터베이스 관리 시스템(RDBMS)에서 참조 무결성을 유지하면서 데이터의 변경(수정 또는 삭제)이 연쇄적으로 반영되도록 하는 기능을 의미합니다. 아래에서 CASCADE의 원래 뜻과 데이터베이스에서의 구체적인 역할, 특히 외래 키(Foreign Key, FK)와 관련된 CASCADE UPDATE에 대해 설명하겠습니다.CASCADE의 원래..
파이썬과 함께 URL 인코딩과 퍼센트 인코딩 제대로 이해하기 TL;DRURL은 본질적으로 US‑ASCII 문자만 허용한다. 이 한계 때문에 등장한 것이 퍼센트 인코딩(percent‑encoding)이고, 이를 사용해 "안전하지 않은" 문자를 %XX 형태로 표현한다. 그러나 대소문자를 언제 무시하고 언제 구분해야 하는지는 계층마다 다르다—이 글은 바로 그 경계를 깔끔하게 정리한다.1. 왜 URL 인코딩이 필요한가?문자 집합 제한URL은 원칙적으로 US‑ASCII(7‑bit)만 허용https://example.com/테스트 → 깨짐예약 문자:/?#[]@ 등은 문법 구분자이므로, 데이터로 쓰면 충돌name=Tom&Jerry → &가 파라미터 분리자로 해석공백·한글·이모지파싱 오류·깨짐 예방Hello World → Hello%20World 또는 Hello+World 해결..
그냥 따라만 하면 되는 AWS IAM Identity Center(SSO)로 EKS 접근하기 개요AWS IAM Identity Center(예전 SSO) 자격증명을 이용해 EKS 클러스터에 안정적으로 접근하기 위한 표준 워크플로우를 정리합니다.– 목적: 팀원 간 시행착오 제거, 10분 이내에 정상 접근 보장0. 용어 정리SSO 세션SSO 포털 URL·Region·OAuth Scope 묶음. aws configure sso-session으로 정의브리지 프로파일SSO 세션 + Permission Set 조합. 실제 자격증명(임시 크리덴셜) 발급 담당업무 프로파일브리지 프로파일을 source_profile로 사용해 AssumeRole 하는 IAM Role (read-only/read-write) 1. 선행 조건AWS CLI v2 ≥ 2.15.xkubectl ≥ v1.24 (client-go exec ..
개발 속도에 관한 생각 잘 구조화된 코드는 처음 작성할 때 다소 번거롭고 시간이 더 걸릴 수 있습니다. 하지만 이후 코드를 읽거나 수정해야 할 때 큰 이점을 제공합니다. 실제로 버그를 수정하거나 기능을 변경할 때, 코드를 이해하고 파악하는 데 대부분의 시간이 소요되는 경우가 많습니다. 이를 고려하면, 처음부터 적절한 수준으로 코드를 구조화하는 것이 중요하다는 것을 최근 들어 절실히 느끼고 있습니다.이에 따라 몇 가지 실천 방안을 제안하면 다음과 같습니다:한 함수에 전달되는 파라미터가 3개 이상이라면, 이를 개선할 방법을 고민해보는 것이 좋습니다. 예를 들어, 파라미터를 객체로 묶거나 더 작은 단위로 함수를 분리하는 방안을 고려할 수 있습니다.클래스 없이 dict(파이썬)나 Map(자바) 같은 자료 구조를 사용하고 있다면, 이것..
2025-04-16. 회고 및 다음 목표 설정 버즈빌 SSP 플랫폼 개발팀 인턴으로 합격하여 다음 주부터 출근하기로 하였다! 자세히 이야기할 순 없으나, 전형들이 내가 했던 것 중에 가장 흥미로웠고 특히 사전과제는 배울 수 있는 점이 많았어서 합격하지 못했더라도 공부할 방향성을 잡을 수 있었을 것이다. 그래서 전형을 진행하면서 팀에 합류하게 되는걸 더 기대하게 된 것 같기도 하다. 저번 분기의 목표였던 취업 활동을 1차적으로 달성하게 되었으니 다음에 내가 이뤄야 할 것들을 한번 정리해보았다. 첫 번째 목표는 열심히 배워서 팀에 잘 적응하는 것이다.예전에 '세이노의 가르침'에서 알려준 신입을 위한 서적이 있었는데, 한번 찾아보고 정리해보면 좋을 것 같다. 출판사 데이원이 운영하는 공식 블로그입니다. 공식 카페: cafe.naver.com/saynol..