[Spring 입문] #03 용어 모음

2025. 3. 17. 17:59·코딩 공부/Spring 입문

1️⃣ 명명 규칙

- 프로그래밍 세계에서는 각각의 언어 , 환경에 알맞는 명명 규칙이 존재한다 .

1. snake_case

- Python 이나 DB Table, Column 에 사용된다 .

- 문자와 문자 사이를 _ 언더바로 이어준다 . 모든 단어는 소문자이거나 대문자이다 .

2. camelCase

- Java, JavaScript, TypeScript 에서는 변수 , 함수 , 메서드 이름을 만들 때 사용한다.

- 문자와 문자 사이를 대문자로 이어준다 .

3. PascalCase

- 대부분의 프로그래밍 언어에서 클래스 이름을 지정하는 데 파스칼 케이스가 사용된다 .

- 문자의 처음 시작을 대문자로 한다. 문자와 문자 사이를 대문자로 이어준다 .

4. kebab-case

- 문자와 문자 사이를 - 대시로 이어준다 .

- 모든 단어는 소문자이다 .

5. Java 의 명명법

종류 설명 예시 규칙
Project [프로젝트, 레파지토리] 대/ 소문자 구분없이 시작 MyProject -
Pakage [패키지] 소문자 시작 com.sparta.homework -
class [클래스] 대문자 시작, 명사사용 class Person; PascalCase
interface [인터페이스] 대문자 시작, 형용사 사용 interface Runnable PascalCase
method [메서드] 소문사 시작, 동사 사용 add(), move() camelCase
variable [변수] 소문자 시작 int number camelCase
constant [상수] 대문자로 시작, 문자와 문자 사이는 언더바 구분 static fianl int MAX_COUNT -

 

2️⃣ JSON

" JSON은 클라이언트와 서버가 통신할 때 사용하는 데이터 양식이다. 클라이언트와 서버가 사용하는 언어에 관계 없이 통일된 데이터를 주고받을 수 있도록 만들어준다. "

1. JSON 의 특징

- 과거 웹 초기 시절부터 사용된 XML 은 헤더와 태그 등의 여러 요소로 가독성이 떨어지고, 불필요한 용량을 잡아먹는다는 단점을 항상 지적받았다.

- 이에 대응해 간결하고 통일된 양식으로 각광을 받고 있는 것이 JSON이다.

  • JSON은 사람, 기계 모두 이해하기 쉬우며 용량이 작다.
  • XML을 대체해서 데이터 전송 등에 많이 사용한다.
  • 마치 전세계 공통어로 영어를 사용하는것처럼 Web의 세계에서는 JSON(JavaScript Object Notation)을 공통어로 사용한다.

- 어떠한 언어를 사용하는지에 상관없이 서로 통신을 할 수 있는데 이것이 가능한 이유는 JSON 형태로 데이터 통신을 하기 때문이다.

2. JSON 의 구조

{
  "user": [
    {
      "first_name": "wonuk",
      "last_name": "Hwang",
      "age": 100,
      "phone_agree": false,
      "hobby": ["Java", "Spring"]
    },
    {
      "firstName": "sparta",
      "lastName": "Team",
      "age": 200,
      "phone_agree": true,
      "hobby": ["React", "Spring", "Node"]
    },
  ]
}
  • snake_case, camelCase 모두 사용이 가능하다.
    • Application 내에서 변환해주는 자동 변환을 처리하는 로직을 사용하면 가능하다 !
  • key-value 형태로 구성되어 있다.
  • null, number, string, array, object, boolean 형태의 데이터를 사용할 수 있다.

 

3️⃣ 서버의 성능향상

1. Scale Up

- 수직적 확장이다.

- 단일 서버의 하드웨어의 사용을 높인다. (CPU, Memory 등의 스펙을 높인다)

- 요청에 대한 처리를 더욱 빠르게 할 수 있도록 만든다.

2. Scale Out

- 수평적 확장이다.

- 같은 사양의 서버(인스턴스)를 여러 대 배치한다.

- 동시에 더 많은 사용자 요청을 처리할 수 있도록 만든다.

둘의 차이를 볼 때, Scale Up 은 성능을 높일 수록 비용이 기하급수적으로 올라가는 걸 알 수 있다.

 

4️⃣ 통신 상태 유지 여부

1. Stateful (상태 유지)

- 클라이언트의 상태를 유지하는 것이다.

- 같은 서버가 유지되어 있어야 한다.

- 상태를 유지하고 있던 서버가 종료되었다면 서버는 응답할 수 없을 것이다.

- 서버는 다양한 이유로 동작하지 않을 수 있다.

  • 시스템 에러, 비지니스 로직 문제, 리소스 부족 문제 등

- 요청 트래픽이 몰리게되면 상태를 유지하는 것에 Resource가 많이 소모된다.

  • 리소스가 버티지 못하면 서버가 종료되거나, 다음 요청에 대한 처리가 느려진다.

2. Stateless

- 클라이언트의 상태를 유지하지 않는다.

1) 장점

  •  같은 서버를 유지할 필요가 없다.
  • Scale Out 수평 확장성이 높다.
  • 갑자기 요청량이 증가하여도 서버를 증설 하기 쉽다.

2) 단점

  • 클라이언트가 데이터를 추가적으로 전송해야 한다.
  • 전송되는 데이터의 양이 많아진다.

3) 한계점

  • WebApplication을 만들때 서버의 확장성을 고려하여 최대한 Stateless하게 만들어야 한다.
  • 하지만, 실제로는 로그인과 같은 상태를 유지해야하는 경우가 발생한다.
  • Cookie, Session, Token 등을 활용하여 이러한 한계를 극복한다.
    • 상태 유지를 최소화 시켜야 한다.

 

5️⃣ 서버 간의 연결(Connection) 유지 여부

1. Connection(연결)

- 서버는 클라이언트와 연결을 유지하기 위해서 자원을 소모한다.

- 하지만, 수많은 사람들이 서비스를 이용해도 실제 서버에서 동시에 처리하는 요청은 작다.

  • 클라이언트가 아무런 요청이 없어도 연결을 유지한다.   

1) 장점

  • 새로운 연결 과정을 거치지 않아도 된다.
  • 그만큼 요청에 대한 응답 속도가 빨라진다.
        

2) 단점

  • 클라이언트가 지속적으로 요청을 보낼거라는 보장이 없다.
  • 즉, 연결을 위한 자원이 낭비된다.

2. Connectionless(비연결)

- 클라이언트와 서버는 연결을 유지하지 않는다.

- 서버는 최소한의 자원만을 사용한다.

ex) 브라우저가 켜진 상태에서 인터넷이 종료되어도 홈페이지가 정상적으로 노출된다.

1) 장점

  • 서버 자원을 효율적으로 사용할 수 있다.

2) 단점

  • 요청이 추가적으로 오게되면 연결(3 way handshake)을 새로 해야한다.
    • → 요청에 대한 응답 시간이 증가한다.
  • 웹 사이트의 HTML, CSS, JS, 이미지 등의 정적 자원 모두를 다시 다운로드 한다.
    • → 캐시, 브라우저 캐싱로 해결한다. (임시저장)
  • 현재는 HTTP 지속연결(Persistent Connections)로 문제를 해결한다.

3. HTTP 지속연결(Persistent Connections)

  • 하나의 요청에 필요한 요청들이 모두 응답될 때 까지 연결을 유지한다.
  • 연결을 한번만 맺고 끊기 때문에, Connectionless 방식보다 연결 횟수가 적다.
    • → 그만큼 속도가 빨라졌다.

ex) HTML 요청 + CSS 요청 + JS 요청 + 이미지 요청

'코딩 공부 > Spring 입문' 카테고리의 다른 글

[Spring 입문] #06 Web Application  (0) 2025.03.18
[Spring 입문] #05 HTTP 2  (0) 2025.03.18
[Spring 입문] #04 HTTP 1  (0) 2025.03.17
[Spring 입문] #02 Web 기초  (1) 2025.03.17
[Spring 입문] #01 네트워크  (0) 2025.03.17
'코딩 공부/Spring 입문' 카테고리의 다른 글
  • [Spring 입문] #05 HTTP 2
  • [Spring 입문] #04 HTTP 1
  • [Spring 입문] #02 Web 기초
  • [Spring 입문] #01 네트워크
sintory-04
sintory-04
🚀🚀🚀
  • sintory-04
    Sintory Dev Blog
    sintory-04
    글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (289)
      • 백엔드 부트캠프 (111)
        • TIL (97)
        • WIL (0)
        • 문제풀이 (7)
        • 기타 (6)
      • 백엔드 부트캠프[사전캠프] (35)
        • TIL (16)
        • 문제풀이 (17)
        • 기타 (1)
      • Troubleshooting (11)
      • 코딩 공부 (118)
        • Java (28)
        • Baekjoon-Java (24)
        • Programmers-Java (40)
        • Spirngboot (11)
        • typescript (1)
        • JavaScript (6)
        • Spring 입문 (8)
      • 프로젝트 (8)
        • ToDoApp(FireBase) (3)
        • ToDoApp(Spring) (5)
      • 기타 (4)
  • 블로그 메뉴

    • 소개
    • Github
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
sintory-04
[Spring 입문] #03 용어 모음
상단으로

티스토리툴바