전체 글 44

복잡도와 핵심 자료구조 (C++, Java, Python 예시)

🧠 [5.1 복잡도] 이해 완전 정복면접을 위한 CS 전공지식노트 p.231 - 262 기반으로 작성.✅ 복잡도가 뭐지?알고리즘의 성능을 수치화한 기준입니다. 복잡도는 코드가 얼마나 빠르고 효율적으로 동작하는지를 판단하는 ‘시간과 공간 자원의 소비량’을 나타내는 척도예요.시간 복잡도(Time Complexity): 코드가 실행되는데 걸리는 시간 (≒ 반복 횟수)공간 복잡도(Space Complexity): 코드가 실행될 때 사용하는 메모리 공간⏱️ 5.1.1 시간 복잡도💡 시간 복잡도란?입력의 크기(n)가 커질수록, 코드가 얼마나 더 느려지는지를 보는 것.실제 걸리는 ‘초’ 단위 시간은 아니고, 입력 크기에 비례하는 ‘연산 횟수’를 수학적으로 나타낸 것이에요.💡 왜 중요할까?예를 들어:O(n²) 알..

DSA 2025.05.19

샤딩 vs 파티셔닝, 무엇을 언제 선택해야 할까? – 데이터 분산 전략

파티셔닝과 샤딩은 단순한 성능 향상을 위한 기술이 아닙니다. 이 글에서는 두 전략의 개념과 차이를 명확히 구분하고,Airbyte, LINE 등 실무 사례를 통해 실제 기업들이 왜 각각의 전략을 선택했는지를 살펴봅니다.마지막엔 분산 전략을 선택할 때 고려해야 할 판단 기준도 함께 정리했습니다.1. 왜 분산 저장이 필요한가?서비스가 성장하면서 점점 더 많은 사용자 요청과 데이터가 쌓이게 됩니다. 이때 단일 DB 인스턴스에 모든 데이터를 저장하고 조회하려고 하면 시스템이 감당하지 못하고 병목이 발생하게 됩니다. 그 병목은 성능 저하뿐 아니라, 운영 이슈, 데이터 정합성 문제로 이어질 수 있죠. 이 섹션에서는 왜 데이터를 분산시켜야 하는지 근본적인 이유부터 살펴봅니다.🔥 문제 정의서비스 이용자가 늘어나면, 데..

Database 2025.04.09

NoSQL의 모든 것: 개념, 종류, MongoDB와 Redis 맛보기

1. 개요: 왜 NoSQL인가?프로젝트에서 대용량 데이터를 다루거나 수평적 확장이 필요한 상황이라면, RDBMS 대신 NoSQL을 검토해본 적이 있을 것입니다.📌 NoSQL의 의미NoSQL은 'Non-SQL' 또는 'Not only SQL'로 해석되며, SQL처럼 특정 쿼리 언어를 지칭하는 것이 아닌 새로운 데이터베이스 패러다임을 의미합니다. 전통적인 관계형 데이터베이스의 제약에서 벗어나 데이터를 더 자유롭고 유연한 형태로 저장하고 관리하는 접근 방식입니다. 이 글에서는 NoSQL의 주요 네 가지 종류를 구체적으로 비교하고,왜 NoSQL이 주목받는지, MongoDB와 Redis의 기본 사용법까지 실습 방법을 공유합니다.📖 참고: 이 글은 『이것이 취업을 위한 컴퓨터 과학이다』 CHAPTER 06, p..

Database 2025.04.08

정규화(Normalization): 중복 없는 데이터베이스 설계 (1NF - BCNF)

📘 정규화 단계 정리1. 개요데이터베이스 설계를 하다 보면, 모든 정보를 한 테이블에 넣고 싶어질 때가 있어요. 그런데 그렇게 만들면 어떤 문제가 생길까요?데이터가 중복되고수정할 때 실수하고삭제했더니 같이 날아가고 😵이런 문제를 막기 위해 등장한 게 바로 정규화(Normalization) 입니다. 정규화는 테이블을 잘게 나누고, 각 속성을 적절한 자리에 배치해서 데이터의 무결성과 유지보수성을 높이는 설계 방식입니다.정규화를 하면 단순히 중복만 줄이는 게 아니라,데이터 일관성(consistency) 유지삽입/삭제/수정 이상(Anomaly) 방지테이블 구조가 더 확장성 있게 설계됨같은 이점이 있습니다.📖 참고: 이 글은 『이것이 취업을 위한 컴퓨터 과학이다』 CHAPTER 06, p.593 ~ p.60..

Database 2025.04.07

효율적 쿼리란? - 서브쿼리와 조인, 뷰, 인덱스로 쿼리 최적화

효율적 쿼리란 무엇일까?데이터베이스는 수많은 데이터를 저장하고, 이 데이터에 대해 빠르고 정확한 응답을 제공해야 합니다. 하지만 단순히 작동하는 SQL 문을 작성하는 것만으로는 부족합니다. "어떻게 하면 더 빠르게, 더 적은 비용으로 원하는 결과를 가져올 수 있을까?" 가 바로 효율적인 쿼리를 고민해야 하는 이유입니다.📖 참고: 이 글은 『이것이 취업을 위한 컴퓨터 과학이다』 CHAPTER 06, p.573 ~ p.592의 내용을 기반으로 한 설명입니다. 더보기[참고] 쿼리 실행 과정  SQL 문은 단순한 명령어처럼 보이지만, DB 내부에서는 복잡한 과정을 거칩니다. 실행 과정을 크게 요약하면 다음과 같습니다.파싱(Parsing) – SQL 문법 분석 및 내부 표현으로 변환최적화(Optimization..

Database 2025.04.07

웹 개발자라면 꼭 알아야 할 데이터베이스 기초 정리

1. 왜 데이터베이스가 중요한가?웹 서비스를 개발하다 보면 사용자 정보, 게시글, 주문 내역 등 수많은 데이터를 다루게 됩니다. 이 데이터를 안전하고 안정적으로 관리하기 위해 반드시 필요한 것이 바로 데이터베이스(Database) 입니다. 데이터베이스란, 여러 사람이 공유하고 사용할 목적으로 체계화된 데이터의 집합이며, 이러한 데이터를 효율적으로 저장, 수정, 조회할 수 있도록 돕는 프로그램이 바로 DBMS(Database Management System) 입니다.✅ 데이터베이스는 단순한 저장 공간이 아니라, 웹 서비스의 핵심 기반 인프라입니다.2. DBMS의 종류와 RDBMS가 중요한 이유DBMS는 크게 두 가지로 나뉩니다:관계형 DBMS(RDBMS): MySQL, Oracle, PostgreSQL 등..

Database 2025.04.07

프록시와 스케일링: 안정적인 트래픽 처리

트래픽이 몰리는 순간, 시스템은 어떻게 안정성을 유지할까?백엔드 아키텍처에서 핵심이 되는 개념인 프록시, 로드 밸런서, 스케일링 전략을『이것이 취업을 위한 컴퓨터 과학이다』 5-7절 내용을 바탕으로 정리합니다.1. 오리진 서버와 중간 서버: 포워드 프록시와 리버스 프록시프록시는 말 그대로 중간에서 통신을 중개하는 서버입니다.하지만 ‘누구를 대신해서’ 요청을 보낼 것인지에 따라 두 가지 종류로 나뉩니다.✅ 포워드 프록시 (Forward Proxy)클라이언트 입장에서 중간 서버내부망 사용자 → 외부 서버 요청 시 사용접근 제어, 캐싱, 보안 우회(우회 접속) 등에 활용ex) 회사 내부에서 외부 웹사이트 접근 시, 포워드 프록시 서버를 거쳐야 하는 경우 Q: 프록시 서버와 VPN의 차이는 무엇인가요?→ 둘 다..

Network 2025.03.26

[3편] 브라우저는 어떻게 나를 기억할까? - HTTP 활용

쿠키부터 HTTPS까지, HTTP 활용 기술1. 개요웹 개발을 하면서 가장 자주 접하게 되는 프로토콜은 HTTP(Hypertext Transfer Protocol) 입니다. 우리는 흔히 이 프로토콜을 통해 데이터를 주고받고 있지만,단순히 텍스트를 요청하고 응답하는 것 외에도,사용자 상태 유지, 콘텐츠 최적화, 보안 통신, 인증 처리 등 매우 다양한 기능을 제공한다는 점은 간과하기 쉽습니다. 이번 글에서는 실전 프로젝트에서 꼭 필요한 다음과 같은 HTTP 활용 기술들을 정리해봅니다.사용자의 로그인 상태를 유지하는 쿠키서버 응답을 효율적으로 재활용하는 캐시클라이언트와 서버가 언어, 포맷을 조율하는 콘텐츠 협상사용자의 신원을 검증하는 인증전송 중 데이터의 보안을 책임지는 HTTPS(보안 통신)2. 쿠키 (Co..

Network 2025.03.26

[2편] HTTP 메서드부터 상태 코드, 주요 헤더까지

1. 개요이번 포스트에서는 HTTP의 핵심 요소인 메서드, 상태 코드, 주요 헤더에 대해 살펴봅니다. REST API 설계, 클라이언트-서버 통신 흐름 파악, 인증 및 보안 처리 등실무 전반에서 자주 마주치는 필수 기초입니다.2. HTTP 메서드 – 요청의 목적을 나타내는 방식HTTP는 클라이언트가 서버에 요청을 보낼 때 무엇을 하고 싶은지를 명시합니다.이는 HTTP 메서드(Method)를 통해 표현됩니다. 메서드설명GET리소스를 조회할 때 사용. URL에 데이터를 포함하고 본문은 없음HEADGET과 같지만 본문 없이 헤더 정보만 요청POST서버에 리소스를 생성할 때 사용. 본문에 데이터 포함PUT리소스를 전체 수정할 때 사용PATCH리소스를 일부 수정할 때 사용DELETE리소스를 삭제할 때 사용✅ 예시..

Network 2025.03.26

[1편] 브라우저는 어떻게 서버를 찾을까? – DNS와 HTTP 메시지 구조까지

1. 들어가며웹 개발을 하다 보면 가장 기초적이면서도 중요한 개념이 바로 HTTP입니다.하지만 그 시작점인 DNS, 그리고 HTTP 메시지의 구조에 대해 정확히 알고 있어야 합니다. 이번 글에서는 다음의 흐름을 따라가며 웹 요청의 여정을 함께 따라가보겠습니다.사용자가 브라우저에 www.example.com을 입력하면,어떻게 서버의 IP를 찾고,어떤 형식의 메시지를 주고받으며,어떻게 웹 페이지가 뜨는지?2. DNS와 URI/URL – 웹 통신의 출발점2-1. 도메인 네임과 DNS컴퓨터는 IP 주소(예: 1.2.3.4)로 통신하지만,우리는 www.example.com 같은 도메인 이름을 사용합니다. 이걸 IP로 바꿔주는 시스템이 바로 DNS (Domain Name System) 입니다. 즉, DNS는 사람이..

Network 2025.03.26