[Spring 입문] 용어 모음집

박화랑·2025년 3월 17일

Spring_개념정리

목록 보기
3/17

용어 모음집 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의 주요 특징

    1. Key-Value 형태로 데이터 구성 ("name": "John")
    2. 배열(Array) 지원 ("hobbies": ["Reading", "Gaming"])
    3. 데이터 타입 지원: string, number, boolean, null, array, object
    4. 텍스트 기반이라 경량 데이터 교환에 유리

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 개념과 프로토콜을 학습할 예정!

profile
개발자 희망생

0개의 댓글