도커란 무엇이고 어떻게 동작하는 것인가? Docker란? --사용자가 직접 커널을 다루는 것은 어렵기 때문에 이를 편리하게 다룰 수 있도록 사용하는 도구이다. 즉, 컨테이너 가상화 기술을 사용하기 위한 도구이고 커널의 컨테이너 가상화 기술을 사용자가 손쉽게 활용할 수 있다. 도커와 같은 컨테이너 가상화 도구를 컨테이너 플랫폼이라고 부른다. 컨테이너 플랫폼은 자체적으로 가지고 있는 컨테이너 엔진과 컨테이너 런타임으로 구성되어 있다. 컨테이너 엔진 : 사용자의 요청을 받아서 컨테이너를 관리해주는 역할컨테이너 런타임 : 직접 커널과 통신하면서 실제로 격리된 공간을 만드는 역할 도커는 RUNC라는 컨테이너 런타임을 사용한다.해당 컨테이너 런타임은 OCI라는 곳에서 규정한 컨테이너 런타임 인터..
베어메탈?하이퍼바이저?컨테이너? 베어메탈 (Baremetal) -- 일반적으로 한 컴퓨터에서 각자 프로그램들을 실행시키는 방식과 비슷하다.컴퓨터(서버)를 하나 구하고 해당 (하드웨어)서버에 OS를 설치 후 여러 소프트웨어들을 실행시키는 방식이다.(DB 서버, 웹 서버, 웹 애플리케이션 서버 등) 이 베어메탈 방식은 기업에서 사용하기에는 적합하지 않다. 위 그림처럼 하나의 서버에 프로그램 4개를 실행시킨다고 해보자. 윈도우 OS를 실행하면 기본으로 CPU 1 Core와 메모리 8 GB가 사용된다. 총 5 Core / 40 GB RAM을 사용하게 된다. 여기까지는 메모리도 넉넉하게 남아있고 서버를 사용하기에는 문제가 없다.오히려 하나의 OS에서 프로그램들을 실행하여 관리하니 편하다. 다만 하나의..
이메일을 통해서 인증코드를 전송하려면어떻게 해야 할까? SMTP 의존성 추가하기 --SMTP란?Simple Mail Transfer Protocol의 약자로인터넷을 통해 이메일 메시지를 주고받을 때에 사용되는 통신 프로토콜이다. build.gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-mail'} 해당 의존성은Spring Boot 애플리케이션에서 이메일을 쉽게 전송할 수 있도록 지원하는 기능을 가지고 있다. 주요 기능JavaMailSender : 이메일을 전송하기 위한 기본 인터페이스 (간편하게 이메일을 구성 및 전송)MailSenderAutoConfiguartion : 이메일 ..
서버란 무엇이고서버를 구축하는 방법에는 무엇이 있을까? 서버란? --서버는하드웨어와 해당 하드웨어에서 실행되는 소프트웨어까지 모두 포함하는 단어이다. 하지만하드웨어만 있는 경우에도 서버라고 부를 경우가 있고소프트웨어만 있는 경우에도 서버라고 부를 경우가 있다. 예시로"서버의 전원이 꺼졌다." = 하드웨어 서버"서버 설치파일을 다운로드하였다." = 소프트웨어 서버 (일반적으로 부르는 서버는 소프트웨어 서버를 의미하는 경우가 많다.) 즉, 서버는 문백에 따라서 이해하면 된다. 서버(Server)는서브(Serve)라는 단어에서 따온것으로 무엇을 제공하는 주체를 의미하게 된다. 클라이언트는 서버에게 어떠한 요구에 대해 요청을 하고서버는 항상 요청에 대한 결과를 응답(제공)해준다. 보통 ..
security 동작 중에 발생하는 예외는어떻게 처리할 수 있을까? 기존에 사용하는 예외 처리 방법을 사용할 수 있나? --평소에는 @ControllerAdvice, @RestControllerAdvice, @ExceptionHandler 를 이용해서 예외처리를 했다.다만 해당 어노테이션들을 사용하는 방법은 컨트롤러에서 발생하는 예외를 처리하는 방법으로아직 컨트롤러에 접근하기도 전 단계인 security에서 발생하는 예외는 처리할 수 없다. 2024.01.18 - [Spring Boot 3] - 상태 코드 반환하기2024.04.24 - [Spring Boot 3] - 전역으로 예외 처리 통일 시키는 방법-- security에서 발생하는 예외를 처리하는 방법은? --security에서 발생하..
동기 (Synchronous),비동기 (Asynchronous) 란 무엇인가? 동기 (Synchronous) --동기식은어떠한 행동을 하고 해당 행동에 대한 응답(결과)를 확인한 후 그 다음 행동을 진행하는 것이다.그리고 여러개의 요청을 순차적으로 진행하게 된다. -- 비동기 (Asychronous) --비동기식은 동기식과 다르게어떠한 행동을 하고 해당 해동에 대한 응답(결과)를 확인하지 않고 바로 다음 행동을 진행하는 것이다.그리고 여러개의 요청을 순차적으로 진행하지 않는다. -- 동기식과 비동기식의 장단점 --동기식은어떠한 행동에 대해 응답이 올 때까지 기다리다가 응답을 확인하고 그 다음 동작을 수행하기 때문에응답이 올 때까지는 아무것도 하지 않고 가만히 있는 단점이 있지만결과를 ..
특정 시간마다 자동으로 수행하는 로직은어떻게 구현해야 할까? 환경 --IntelliJ community 2023.1.5Spring Boot 3.2.1JDK 17-- 스케줄러란? --예시로쇼핑몰에서 회원 등급을 올해 총 구매 금액을 기준으로 부여한다면매년 회원의 총 구매 금액을 0으로 초기화를 해주어야 한다. 이렇게 특정 시간마다 자동으로 어떠한 로직이 수행되도록 도와주는 것이 스케줄러이다. Spring에서는 스케줄링을 구현하기 위해 TaskScheduler : 스케줄링 기능을 관리하는 인터페이스 / 스케줄링할 작업을 정의 및 실행 가능@Scheduled : 메서드에 정의할 수 있으며 정의된 메서드는 주기적으로 실행되도록 스케줄링이 된다.기능을 제공한다.-- Spring에..
API 요청 시 접근하는 URI에 자신의 id 값을 입력하여접근을 하는데 이 때 id가 본인이 맞는지 확인하는 방법이 무엇일까? 의문 --회원 A의 id(기본키) 값이 5라고 가정하자.회원 A는 마이 페이지에 접근하려고 마이페이지에 접근하는 API URI인/member/{id}/myPage 에 접근을 했다고 할 때일반 회원이 조작없이 접근할 때는 자동으로 URI가 완성되어 자신의 id를 입력하여 접근이 되지만만약 본인의 id가 5지만 URI는 6으로 변경하여 수동으로 요청을 보내게 되면 어떻게 될까? 우선 JWT의 토큰으로 회원이 인증이 되므로 접근이 가능해진다.그리고 API에 접근할 때는 id의 값을 본인의 아이디가 아닌 다른 아이디로 접근을 하여본인이 아닌 다른 사람의 정보를 볼 수 있게 된..