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)
정형 데이터 관리 (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)
'SpringBoot' 카테고리의 다른 글
스프링부트 3백앤드 개발자 되기 : 자바 편 5장 정리 (데이터베이스/ ORM) (0) | 2025.02.17 |
---|---|
스프링부트 3백앤드 개발자 되기 : 자바 편 4장 정리 (스프링부트3 테스트 코드) (2) | 2025.02.17 |
스프링부트 3백앤드 개발자 되기 : 자바 편 3장 정리 (스프링부트3 구조 이해 ) (2) | 2025.02.14 |
스프링부트 3백앤드 개발자 되기 : 자바 편 2장 정리 (스프링부트3 예제) (0) | 2025.02.14 |
스프링부트 3백앤드 개발자 되기 : 자바 편 1장 정리 (스프링부트 환경 세팅) (0) | 2025.02.14 |