SpringBoot

스프링부트 3백앤드 개발자 되기 : 자바 편 1-2장 정리 (자바 백앤드가 알아두면 좋은 지식들)

나는주민 2025. 2. 14. 13:24

1) 서버와 클라이언트 

 

  • 서버(Server): 클라이언트의 요청을 받아 데이터를 처리하고, 필요한 정보나 서비스를 제공하는 역할.
  • 클라이언트(Client): 서버에 요청을 보내 필요한 정보를 받거나 특정 작업을 수행하는 역할.
  • 관계: 클라이언트가 요청(Request)을 보내면, 서버는 이를 처리하고 응답(Response)을 반환하는 방식으로 상호작용.


2) 데이터베이스

 

  • RDB(Relational Database, 관계형 데이터베이스):
    데이터를 테이블(표) 형식으로 저장하며, 정해진 스키마(구조)를 따름. 데이터를 관계(Relation)로 연결하여 정교한 쿼리가 가능함. 대표적인 DBMS로 MySQL, PostgreSQL, Oracle 등이 있음.
  • SQL(Structured Query Language, 구조화된 질의 언어):
    RDB에서 데이터를 저장, 조회, 수정, 삭제하는 데 사용하는 표준 언어. SELECT, INSERT, UPDATE, DELETE 등의 명령어를 사용함.
  • NoSQL(Not Only SQL, 비관계형 데이터베이스):
    테이블 기반이 아닌 다양한 형태(문서, 키-값, 그래프 등)로 데이터를 저장하며, 유연한 스키마 구조를 가짐. 대량의 데이터를 빠르게 처리할 수 있어 빅데이터 및 분산 시스템에서 많이 사용됨. 대표적인 DB로 MongoDB, Redis, Cassandra 등이 있음.


    RDB(Relational Database) vs NoSQL 차이점 구분RDB (관계형 데이터베이스)NoSQL (비관계형 데이터베이스)
    데이터 구조 테이블(표) 형식, 행과 열 구조 문서, 키-값, 그래프, 컬럼 기반 등 다양한 형태
    스키마 고정된 스키마(정해진 구조) 유연한 스키마(동적 구조 가능)
    데이터 관계 여러 테이블 간 관계(Join) 가능 보통 관계 없이 개별적으로 저장
    확장성 수직 확장(서버 성능 업그레이드) 수평 확장(여러 서버 분산 저장)
    속도 및 성능 복잡한 쿼리 처리 가능하지만 대량 데이터에서 속도 저하 가능 단순한 데이터 처리 시 빠르고 확장성 높음
    사용 사례 전통적인 금융, ERP, CRM 시스템 빅데이터, IoT, SNS, 실시간 처리 서비스
    📌 요약
    • RDB: 정형화된 데이터를 테이블로 관리하며 정교한 관계와 트랜잭션이 중요한 경우 사용. (예: MySQL, PostgreSQL)
    • NoSQL: 다양한 데이터 구조를 지원하며 대량의 데이터를 빠르게 처리할 때 적합. (예: MongoDB, Redis)

    📌 RDB(Oracle)와 NoSQL의 선택 기준필요 요소Oracle(RDB)NoSQL (예: MongoDB, Redis)
    정형 데이터 관리 (ex: 사용자 계정, 경로 정보) 적합 (테이블 구조) ❌ 덜 적합
    대량의 센서 데이터 저장 (ex: 실시간 IoT 데이터) ❌ 처리 속도 느릴 수 있음 적합 (수평 확장 가능)
    빠른 검색 & 처리 속도 (ex: 실시간 내비게이션 경로 탐색) ❌ 느릴 수 있음 빠름 (캐싱 & 분산처리)
    데이터 관계 & 트랜잭션 필요 (ex: 사용자 계정, 결제 정보) 강력한 ACID 트랜잭션 ❌ 약한 일관성
    확장성 (ex: 여러 서버에서 동작) ❌ 수직 확장(비용↑) 수평 확장 가능

3) IP 와 포트(Port)

IP(Internet Protocol) & Port(포트)

1️⃣ IP(인터넷 프로토콜)란?

IP(Internet Protocol) 주소는 네트워크 상에서 장치나 서버를 구별하는 고유한 주소입니다.
모든 장치나 서버는 고유한 IP 주소를 가지고 있으며, 이를 통해 네트워크 상에서 서로 통신할 수 있게 됩니다.

IP 주소의 종류

  • IPv4: 32비트 주소 (예: 192.168.1.1)
  • IPv6: 128비트 주소 (예: 2001:db8::ff00:42:8329)
    IPv4는 4개의 숫자로 구분된 형식을 가지며, IPv6는 더 많은 장치가 연결될 수 있도록 설계된 새로운 주소 체계입니다.

IP의 역할

  • 네트워크 상의 장치 구별
  • 데이터를 목적지까지 전달하는 데 필수적인 역할을 함
  • 인터넷 연결에서 가장 중요한 주소 요소로 사용됩니다.

2️⃣ Port(포트)란?

**포트(Port)**는 하나의 IP 주소 안에서 여러 프로그램이 통신할 수 있도록 구분하는 번호입니다.
각각의 서비스나 애플리케이션은 고유한 포트 번호를 사용하여 서로 다른 통신을 할 수 있습니다.

포트 번호의 역할

하나의 IP 주소에서 여러 프로그램이 동시에 실행될 때, 각 프로그램은 다른 포트 번호를 사용해 서로 구분됩니다.
예를 들어, 웹 서버는 80번 포트를 사용하고, 데이터베이스 서버는 3306번 포트를 사용합니다.

 

🔹 예제 (같은 컴퓨터에서 여러 서비스 실행)

예를 들어, **같은 IP(192.168.1.10)**에서

  • 웹 서버(Apache, Nginx) → 80번 포트 (HTTP), 443번 포트 (HTTPS)
  • 데이터베이스 서버(MySQL) → 3306번 포트
  • 원격 접속(SSH) → 22번 포트

4) 라이브러리와 프레임워크 

🔹 라이브러리(Library) vs 프레임워크(Framework)

정의 특정 기능을 쉽게 구현할 수 있도록 제공하는 코드 묶음 애플리케이션의 구조를 잡아주고 개발 규칙을 제공하는 기반
개발자가 제어 가능 ✅ 개발자가 원하는 기능만 선택하여 호출 가능 ❌ 프레임워크가 전체 흐름을 제어하고 개발자는 필요한 부분만 구현
예시 JDBC(데이터베이스 연결), Log4j(로그 처리), Gson(JSON 변환) Spring(웹 애플리케이션 개발), Django(파이썬 웹 프레임워크), Angular(프론트엔드)


📌 한마디로

  • 라이브러리: 개발자가 직접 호출하여 사용하는 기능 모음
  • 프레임워크: 전체적인 개발 흐름을 제공하고 개발자가 그 틀에 맞춰 코드를 작성해야 함

🔹 Spring vs Spring Boot

📌 둘 다 Java 기반 웹 프레임워크지만, Spring Boot는 Spring을 더 쉽게 사용하도록 만든 것!

자바와 스프링(스프링부트)의 차이

 

설정 방식 XML, JavaConfig 등 복잡한 설정 필요 자동 설정(Auto Configuration) 제공, 설정 간소화
서버 배포 별도로 Tomcat, Jetty 등을 설치해야 함 내장 서버(Tomcat 등) 포함, 바로 실행 가능
의존성 관리 수동으로 추가해야 함 spring-boot-starter-*로 간편하게 관리 가능
사용 목적 대규모 프로젝트, 세밀한 설정이 필요한 경우 빠른 개발, 단순한 웹 서비스 구축

📌 정리하면:

  • Spring: 더 유연하고 확장성이 뛰어나지만 설정이 복잡함
  • Spring Boot: Spring을 쉽게 사용할 수 있도록 자동 설정, 내장 서버 제공

즉, 스프링 부트는 스프링을 더 편하게 쓰도록 만든 것!
웹 애플리케이션을 빠르게 만들려면 Spring Boot, 세밀한 설정이 필요하면 Spring을 사용


🔹 자바 어노테이션(Java Annotation)이란?

어노테이션(Annotation)은 메타데이터(코드에 대한 추가 정보)를 제공하는 기능.
컴파일러, 프레임워크, 실행 중(JVM)이 특정 동작을 수행하도록 도와즌디.


🔹  어노테이션의 역할

코드에 대한 설명 & 메타데이터 제공
컴파일러에게 특정 작업 지시 (@Override, @SuppressWarnings)
런타임에 특정 동작 수행 (Spring의 @Service, @Autowired)