용어 모음집 1강: 프로그래밍 기본 개념
1. 프로그래밍 명명 규칙 (Casing)
-
snake_case
- 단어 사이를 언더바(_) 로 구분
- 모든 단어를 소문자로 작성
- 사용 예:
user_name, product_price
- 주로 Python, 데이터베이스 테이블, 컬럼명에서 사용
-
camelCase
- 단어의 첫 글자는 소문자로 시작하고, 이후 단어는 대문자로 시작
- 사용 예:
userName, productPrice
- Java, JavaScript, TypeScript 변수, 함수명에서 사용
-
PascalCase
- 모든 단어의 첫 글자를 대문자로 시작
- 사용 예:
UserName, ProductPrice
- 클래스, 인터페이스 명명에 사용
-
kebab-case
- 단어 사이를 하이픈(-) 으로 구분
- 사용 예:
user-name, product-price
- HTML, CSS, URL 경로에서 주로 사용
☞ 언어와 환경에 맞는 적절한 명명 규칙을 사용하는 것이 중요!
2. JSON (JavaScript Object Notation)
-
JSON이란?
- 클라이언트와 서버 간 데이터를 주고받을 때 사용되는 경량 데이터 형식
- 언어 독립적이며 가독성이 뛰어남
- XML보다 간결하고 데이터 크기가 작음
-
JSON의 주요 특징
- Key-Value 형태로 데이터 구성 (
"name": "John")
- 배열(Array) 지원 (
"hobbies": ["Reading", "Gaming"])
- 데이터 타입 지원:
string, number, boolean, null, array, object
- 텍스트 기반이라 경량 데이터 교환에 유리
JSON 예제
{
"user": {
"first_name": "John",
"last_name": "Doe",
"age": 30,
"hobbies": ["Reading", "Gaming", "Coding"]
}
}
☞ 웹 API, 데이터 저장, 서버 간 통신 등에 널리 사용됨
3. Scale Up vs Scale Out
-
Scale Up (수직 확장)
- 단일 서버의 성능을 높이는 방식 (CPU, RAM 업그레이드)
- 서버 성능이 제한적이고 비용이 높음
- 예: 더 좋은 사양의 서버로 교체
-
Scale Out (수평 확장)
- 여러 대의 서버를 추가하여 처리 능력 증가
- 병렬 처리가 가능하여 대규모 트래픽 처리에 유리
- 예: 로드 밸런서를 활용한 서버 분산
☞ 대규모 웹 서비스에서는 Scale Out 방식이 일반적!
정리
- 명명 규칙: snake_case, camelCase, PascalCase, kebab-case
- JSON: 가볍고 직관적인 데이터 교환 형식
- 확장 방식: Scale Up (성능 업그레이드) vs Scale Out (서버 추가)
용어 모음집 2강: 네트워크와 상태 관리 개념
1. Stateful vs Stateless
-
Stateful (상태 유지)
- 클라이언트의 상태를 서버가 기억하고 관리함
- 예: 은행 거래 시스템, 온라인 게임
- 특징:
- 같은 서버가 유지되어야 함
- 서버가 종료되면 상태 정보가 사라짐
- 요청이 많아질수록 서버 부담 증가
-
Stateless (무상태)
- 클라이언트의 상태를 서버가 기억하지 않음
- 예: HTTP 요청, REST API
- 특징:
- 각 요청이 독립적이며, 이전 요청과 무관함
- 서버 확장(Scale Out)에 유리
- 추가적인 데이터 전송이 필요 (예: 세션, 토큰 활용)
☞ 웹 애플리케이션에서는 확장성을 위해 Stateless를 선호하지만, 로그인 등 일부 기능에서는 Stateful이 필요
2. Connection vs Connectionless
-
Connection (연결형 통신)
- 클라이언트와 서버가 연결을 유지하면서 데이터 교환
- 예: TCP, 데이터베이스 연결, VoIP
- 특징:
- 초기 연결 과정이 필요 (3-Way Handshake)
- 빠른 응답 가능 (재연결 불필요)
- 서버 자원 소모 증가 (유지 비용 높음)
-
Connectionless (비연결형 통신)
- 연결을 유지하지 않고 필요할 때마다 새로운 요청을 보냄
- 예: UDP, HTTP 요청
- 특징:
- 연결 과정이 없음 → 속도가 빠름
- 요청 시마다 새로운 연결 필요 → 응답 속도 저하 가능
- 서버 자원 절약 (연결 유지 비용 없음)
☞ 일반적인 웹 요청(HTTP)은 Connectionless이지만, 성능 최적화를 위해 지속 연결(Persistent Connection)을 활용하기도 함
3. HTTP 지속 연결 (Persistent Connection)
- 기본 HTTP는 요청-응답 후 연결을 종료 (Connectionless)
- Persistent Connection은 여러 요청을 하나의 연결로 처리하여 성능 개선
- 예: HTTP/1.1부터 기본적으로 지속 연결 지원
☞ 속도를 높이기 위해 HTTP는 지속 연결과 캐싱을 활용
정리
- Stateful vs Stateless: 상태 유지 여부 (Stateful은 서버 부담 증가, Stateless는 확장성 유리)
- Connection vs Connectionless: 연결 유지 여부 (Connection은 빠르지만 비용 높음, Connectionless는 가벼움)
- HTTP 지속 연결: 다수의 요청을 하나의 연결로 처리하여 성능 최적화
☞ 다음 강의에서는 HTTP 개념과 프로토콜을 학습할 예정!