본문 바로가기

전체 글138

Lombok 롬복이란?Lombok 이란 반복되는 getter, setter, toString .. 등 반복되는 메서드를 annotation 형식으로 작성 해서 코드를 줄여주는 라이브러리를 의미한다.적용 방법build.gradle에 다음과 같이 롬복 설정을 추가한다.plugins { id 'java' id 'org.springframework.boot' version '3.3.4' id 'io.spring.dependency-management' version '1.1.6'}group = 'com.example'version = '0.0.1-SNAPSHOT'java { toolchain { languageVersion = JavaLanguageVersion.of(17) }}// 롬복 설정configurations {.. 2024. 12. 27.
HTTP의 이해 HTTP란?클라이언트와 서버가 서로 데이터를 주고받기 위해 사용되는 통신 규약으로 다음과 같은 데이터 타입을 전송할 수 있다.HTML, TEXT이미지, 음성, 영상, 파일 등JSON, XML이렇게 거의 모든 형태의 데이터를 전송할 수 있으며 서버 간 데이터를 주고 받을 때 역시 HTTP 프로토콜을 사용한다.HTTP의 특징1. 클라이언트-서버 구조위에서 HTTP 통신은 클라이언트와 서버가 서로 데이터를 주고 받는 형태로 되어있다고 하였다.즉 클라이언트가 Request를 보내면 서버가 Response를 보내는 요청-응답 구조로 되어있다.이렇게 클라이언트와 서버를 명확하게 구분함으로써 클라이언트는 UI를 그리는데 집중할 수 있고, 서버에서는 비즈니스 로직과 데이터를 다루는데 집중할 수 있게 된다.2. 무상태(.. 2024. 12. 27.
CORS CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유)HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제로 웹 애플리케이션이 리소스가 자신의 출처와 다를 때 브라우저는 요청 헤더에 Origin 필드에 요청 출처를 함께 담아 교차 출처 HTTP 요청을 실행함.CORS는 브라우저에 구현된 스펙으로, 브라우저가 클라이언트의 요청 헤더와 서버의 응답헤더를 비교해서 최종 응답을 결정한다.두 개의 출처를 비교하는 방법은 URL 구성요소 중에서 Protocol, Host, Port 세 가지가 모두 동일한 지 판단CORS의 종류1. Simple Request예비 요청(Preflight.. 2024. 12. 26.
프로세스와 스레드 프로세스의 개념컴퓨터에서 실행 중인 프로그램을 뜻하는 것으로 운영체제(OS)가 프로그램을 실행시키면, 프로세스라는 단위로 관리된다.이 때 각 프로세스는 고유한 메모리 공간을 할당받는데 해당 공간에는 프로그램 코드(명령어들), 데이터(변수, 스택, 힙 등)가 있다.또한 독립적으로 동작하기 때문에 다른 프로세스와 메모리 공간을 공유하지 않는다. CPU: 프로그램의 명령어를 실제로 처리하는 장치메인 메모리(RAM): 프로세스가 CPU에서 실행되기 위해 대기하는 곳으로 프로세스의 실행 코드와 데이터가 여기에 존재한다. 단일 프로세스초창기 컴퓨터의 방식으로 CPU는 한 번에 하나의 작업만 할 수 있는데 이는 실행 중인 프로그램이 있다면 다른 프로그램은 실행할 수 없다. 만약 프로그램이 I/O 작업을 하여 대기 상.. 2024. 12. 26.
웹 서버, WAS, 리버스 프록시 웹 서버웹 서버란 웹 서비스를 지원해주는 하드웨어나 소프트웨어를 의미한다.하드웨어 : 웹 서비스를 지원하는 컴퓨터 시스템을 의미한다.소프트웨어 : 클라이언트로부터 웹 페이지 요청을 받아 정적인 컨텐츠(html, css, jpeg, javascript 등)를 제공하는 컴퓨터 프로그램으로 Apache, Nginx, IIS 등이 있다.만약 정적인 컨텐츠 대신 동적인 컨텐츠를 제공해야 한다면 WAS에게 해당 요청을 전달하고, 처리 결과를 다시 받아와 클라이언트에게 전달해준다.만약 이미지 파일을 클라이언트에게 보내야 한다면? 보통 이미지 파일은 HTML 문서와 함께 클라이언트로 보내지지 않는다. 즉 HTML 문서를 먼저 받은 뒤 그에 맞는 이미지를 다시 서버로 요청하고 그 후에 이미지 파일을 받아오게 됨. 이 때.. 2024. 12. 26.
쿠키, 세션, 토큰 쿠키클라이언트의 상태 정보를 사용자의 브라우저에 저장하는 작은 텍스트 정보로, 웹 서버가 클라이언트에게 보내면 해당 클라이언트는 이를 쿠키 저장소에 저장 후 요청을 보낼 때 이 정보를 함께 전송하여 어떤 클라이언트의 요청인지 식별하는 역할을 한다.Key-Value 쌍으로 구성쿠키 이름, 쿠키 값, 만료시간, 전송할 경로, 전송할 도메인 명, 보안 연결 여부, HttpOnly 여부로 구성예) Set-Cookie: sessionId=abcd1234; Expires=Wed, 21 Oct 2024 07:28:00 GMT; Domain=example.com; Path=/; Secure; HttpOnly하나의 쿠키는 4KB 정도의 크기 제한도메인 당 20개의 쿠키를 가질 수 있음클라이언트는 300개의 쿠키를 저장할.. 2024. 12. 26.
SOLID 원칙 SOLIDSOLID란 객체 지향 설계에서 지켜야 할 5가지 원칙으로 이러한 원칙에 맞게 설계하면 새로운 요구사항이나 변화에 유연하게 대처할 수 있으며 코드의 유지보수를 쉽게하여 개발의 생산성을 올려줄 수 있다.여러 디자인 패턴들이 이러한 SOLID 원칙을 기반으로 만들어졌으며 이는 특정 프로그래밍 언어에 국한되는 것이 아니다.SRP - 단일 책임 원칙(single responsibility principle)한 클래스는 하나의 책임만 가져야 함하나의 클래스는 하나의 기능만 담당할 것하나의 클래스에 여러 기능이 있다면 기능 수정 시 변경 부분이 많아짐하나의 책임이라는 것이 클 수도, 작을 수도 있고 또한 상황에 따라 다를 수 있는데 변경이 있을 때 파급 효과가 적다면 단일 책임 원칙을 잘 따른 것이다.pu.. 2024. 12. 26.
포트포워딩 포트포워딩(Port forwarding)은 말 그대로 포트(Port)를 전달(Forwarding)해 주는 것으로 특정한 포트로 들어오는 데이터 패킷을 다른 포트로 바꿔서 다시 전송해주는 작업을 의미한다.즉 공인 IP(공유기의 외부 주소)로 들어오는 특정 포트의 요청을, 내부 네트워크의 특정 사설 IP와 포트로 전달해주는 기능이다. 라우터는 라우터에 연결된 모든 기기에 사설 네트워크를 구축해주는 역할을 한다. 뿐만 아니라 라우터는 공용 IP를 할당받는데, 이때 사설 네트워크 내의 기기들은 인터넷에 접속하기 위하여 라우터를 거쳐야 한다. 가정용 기기를 원격 기기에 직접 연결하고 싶다면, 서버 포트포워딩을 설정해야 한다.라우터에는 6만 개 이상의 포트가 있는데, 이 중 잘 알려진 포트를 제외한 나머지 포트는 .. 2024. 12. 26.
[네트워크] 사설 IP, 공인 IP IP(Internet Protocol) IP 주소는 네트워크 상에서 기기를 식별하는 고유한 주소로 컴퓨터나 스마트폰 등 네트워크에 연결된 기기의 주소 역할을 한다. 따라서 IP 주소를 통해 기기가 인터넷이나 로컬 네트워크에서 다른 기기와 통신할 수 있다.IP 주소에는 공인 IP 주소, 사설 IP 주소, 동적 IP 주소, 정적 IP 주소 등 다양한 유형이 존재한다.사설 IP사설 IP 주소 : 공유기가 노트북, 스마트 TV, 휴대폰 등 홈 네트워크에 연결된 장치에 할당한 내부 IP 주소를 의미한다. 사설 IP 주소는 로컬 네트워크에서 할당되며 다른 네트워크의 IP 주소와 중복이 가능하다. 대신 동일한 로컬 네트워크에 연결된 장치에는 같은 사설 IP 주소를 할당할 수 없다.사설 IP 주소는 IANA(인터넷 할.. 2024. 12. 26.