Study 19

호스팅이란(Hosting)? - 서버에 웹사이트를 올리는 과정

호스팅이란? 호스팅(Hosting)은 웹사이트나 서비스를 인터넷에 실제로 공개하기 위해 서버 공간을 빌리는 것을 의미한다.개발자가 만든 웹사이트, API, 앱 백엔드 등은 로컬 컴퓨터에서는 잘 작동하더라도,전 세계 사용자들이 접속하려면 인터넷에 연결된 서버가 반드시 필요하다. 이 서버 공간을 제공해주는 서비스가 바로 호스팅(Hosting)이다. 등장 배경초기의 웹 서비스는 단순했다.정적 HTML 파일 몇 개만 있으면 되었고, 개인 PC나 간단한 서버에서도 충분히 제공할 수 있었다.하지만 웹이 발전하면서 다음과 같은 요구가 생겼다.서비스를 24시간 운영해야 함많은 사용자가 동시에 접속할 수 있어야 함갑작스러운 트래픽 증가도 감당할 수 있어야 함보안 패치, 백업, 장애 복구가 필요해짐이처럼 웹 서비스가로그..

웹소켓(WebSocket)의 원리와 동작 방식

웹소켓이란?웹소켓(WebSocket)은 클라이언트와 서버가 실시간으로 양방향 통신을 할 수 있도록 도와주는 기술이다.기존의 HTTP 통신은 요청(Request)과 응답(Response) 구조로만 이루어져 있어,클라이언트가 새 데이터를 원할 때마다 매번 서버에 요청을 보내야 했다. 하지만 웹소켓은 한 번 연결이 맺어지면 서버와 클라이언트가 자유롭게 데이터를 주고받을 수 있다.등장 배경소켓(Socket) 개념이 등장하게 된 배경에는 HTTP의 구조적 한계가 있다.HTTP는 기본적으로 비연결형(stateless) 프로토콜로, 클라이언트가 서버에 요청을 보내면 응답을 받은 뒤 즉시 연결이 종료된다. 예를 들어 채팅 애플리케이션을 만든다고 가정하면,클라이언트는 새로운 메시지가 있는지 확인하기 위해 매번 서버에 “..

소켓의 동작 원리

네트워크 애플리케이션은 운영체제가 제공하는 소켓(Socket)을 통해 네트워크와 통신한다.소켓은 쉽게 말해, 프로세스가 네트워크를 통해 데이터를 주고받기 위한 통신용 창구라고 할 수 있다. 내부적으로는 운영체제 커널의 TCP/IP 스택 위에서 동작하며,데이터를 실제로 보내고 받는 건 이 커널 레벨의 소켓이 담당한다.우리가 작성하는 코드는 결국 "커널에 통신을 부탁하는 코드"다. 그래서 send()나 recv() 같은 함수를 호출하면, 실제 전송은 커널 내부에서 비동기적으로 진행된다. 오늘은 이 소켓이 어떻게 만들어지고, 연결되고, 데이터가 오가는지 그리고 실제 서버 개발자가 알아야 할 부분까지 정리해보려 한다.소켓 통신의 흐름 - 서버와 클라이언트 소켓 통신은 기본적으로 서버(Server) 와 클라이언..

DNS와 그 작동원리

DNS란?DNS(Domain Name System)는 도메인 이름을 IP 주소로 변환해주는 시스템이다.인터넷에서 모든 장치는 IP 주소(예: 142.250.196.110)로 통신하지만, 인간은 숫자보다 의미 있는 이름(예: google.com)을 기억하기 쉽다. 이때 브라우저가 도메인을 입력하면, DNS가 해당 도메인에 대응하는 IP 주소를 찾아준다.즉, DNS는 "사람이 이해하기 쉬운 도메인 이름"을 "컴퓨터가 이해할 수 있는 네트워크 주소(IP)"로 바꿔주는 인터넷의 전화번호부이다. DNS의 기본 구조DNS는 전세계에 분산되어 있는 계층적 네임 서버 구조로 이루어져 있다.하나의 중앙 서버가 아닌, 전 세계 수백만 대의 서버가 역할을 분담한다. 계층설명예시Root DNS Server최상위 루트 도메인..

3. 브라우저의 작동 원리

브라우저란 무엇인가?브라우저(Browser)는 사용자가 웹페이지에 접근할 수 있도록 해주는 클라이언트 측 애플리케이션이다.웹 서버로부터 HTML, CSS, JavaScript 등의 리소스를 요청하고, 이를 해석(Rendering)하여 시각적으로 화면에 표시한다.대표적인 브라우저에는 Chrome, Safari, Edge, Firefox등이 있으며,각각 고유한 렌더링 엔진을 사용한다. (예: Chrome의 Blink, Safari의 WebKit, Firefox의 Gecko)브라우저의 내부 구조브라우저는 단순한 뷰어(Viewer)가 아니라,복잡한 여러 서브시스템으로 구성된 고성능 애플리케이션이다.일반적으로 다음과 같은 핵심 구성 요소를 가진다.구성요소역할User Interface (UI)주소창, 북마크, 뒤로..

2. HTTP의 작동 원리

HTTP란 무엇인가?HTTP(HyperText Transfer Protocol)는 웹 상에서 데이터를 주고받기 위한 애플리케이션 계층 프로토콜이다.우리가 브라우저 주소창에 URL을 입력하면, 브라우저는 서버와 HTTP 규약에 따라 통신을 수행한다. HTTP는 클라이언트-서버(Client-Server)구조를 기반으로 하며,요청(Request)과 응답(Response)이라는 두가지 메시지 형태로 동작한다.즉, 클라이언트(브라우저)가 서버에 요청(Request)을 보내고, 서버는 해당 요청에대한 응답(Response)을 반환한다. HTTP는 기본적으로 TCP/IP 위에서 동작하며, TCP의 신뢰성 있는 전송을 이용해 데이터를 교환한다.(TCP가 연결 관리-패킷 재전송을 담당하고, HTTP는 데이터의 의미를..

1. 인터넷의 작동 원리

인터넷이란 ?인터넷은 "인터커넥트 네트워크(Interconnected NetWork)"의 줄임말이다. 컴퓨터들이 상호적으로 연결되어 정보를 교환, 공유하며 확장하는 네트워크 시스템을 의미한다. 오늘날 인터넷은 단순한 통신망을 넘어,전 세계 수십억 개의 장치들이 동일한 프로토콜(TCP/IP)을 기반으로 데이터를 송수신하며 작동한다. 이 덕분에 우리는 웹, 이메일, 스트리밍, 클라우드 등 다양한 서비스를 한 네트워크 안에서 이용할 수 있다. 컴퓨터들은 어떻게 연결되는가?컴퓨터들이 서로 데이터를 주고받기 위해서는 물리적인 연결이 필요하다.이 연결은 크게 두 가지 방식으로 구분된다 :유선 통신(Wired Communication): 광케이블, 이더넷 케이블 등을 이용해 물리적으로 연결무선 통신(Wireless..

DTO, Domain 비교

DTO vs Domain (Entity) — 왜 분리해야 할까?스프링 부트로 프로젝트를 하다 보면,Controller에서 데이터를 주고받을 때 Entity를 그대로 쓸지, DTO를 따로 만들어야 할지 헷갈릴 때가 많다.둘 다 데이터를 담는 객체지만, 역할과 사용 목적이 완전히 다르다.1. Domain(Entity)Entity는 데이터베이스와 직접 연결되는 객체다.스프링에서는 주로 @Entity 어노테이션을 붙여서 DB 테이블과 1:1 매핑한다.역할DB 테이블과 직접 연결JPA 어노테이션으로 구조 정의비즈니스 로직의 핵심 객체문제점보안 이슈: 비밀번호나 내부 식별자 같은 정보가 그대로 노출될 수 있다.불필요한 데이터: 연관관계가 함께 조회되어 응답이 무거워진다.변경에 취약: 요청/응답 형식이 자주 바뀌면 ..

Study/Spring Boot 2025.11.01

Repository, Service, Controller 계층 비교

스프링 부트로 웹 애플리케이션을 개발하다 보면 “Controller, Service, Repository”라는 구조를 자주 마주하게 된다.이 세 계층은 각각 표현, 비즈니스, 데이터 접근 역할을 분리해 코드의 유지보수성과 확장성을 높여준다.이번 글에서는 스프링 부트의 기본 아키텍처인 3계층 구조(Controller–Service–Repository) 가어떤 역할을 맡고 어떻게 협력하는지를 정리한다.1. Repository 계층( = 데이터 접근 계층 )역할 :데이터 베이스와 직접 소통CRUD 작업 수행책임 :데이터 저장/조회/수정/삭제 수행DB 쿼리 실행엔티티와 DB 테이블 매핑특징 :비즈니스 로직 없이 순수 데이터 접근만Spring Data JPA 사용 시 인터페이스만으로 구현 가능 예시코드 ) ..

Study/Spring Boot 2025.11.01

PostgreSQL 설치

PostgreSQL 공식 사이트에서 다운로드 받기PostgreSQL의 설치를 위해서는 우선 설치할 파일을 다운로드 해야 한다. 파일은 PostgreSQL의 공식 커뮤니티 사이트에서 다운로드 할 수 있다. 우선 공식 사이트에 접속해보자. 공식 사이트의 주소는 다음과 같다.https://www.postgresql.org/ 공식 사이트에 접속하여 다운로드를 위한 방법을 확인하고, 설치를 진행해보자. 설치 순서1) 공식 사이트 접속2) 상단 메뉴의 Download 클릭3) Linux 클릭 -> 원하는 OS 클릭4) 버전 선택 -> 플랫폼 선택 -> 아키텍처 선택 -> Copy Script 클릭5) 준비된 서버의 터미널에 복사한 Script 실행6) 설치 완료 설치 과정PostgreSQL의 공식 사이트에 접속한다..

Study/DataBase 2025.10.30