본문 바로가기

전체 글

(20)
Docker 개념 이해 및 설치와 사용법 WSL 2 설치 [Windows]Windows Home 에디션은 Hyper-V 기능을 지원하지 않기 때문에 Hyper-V 기반 Docker Engine은 사용 불가능하다.Home 버전에서는 WSL2 기반 Docker Engine을 사용해야한다. WSL 2는 VM과 같은 도구 없이 윈도우 환경에서 Linux를 사용할 수 있도록 도와준다.Windows Pro, Enterprise, Education에서는 Hyper-V를 사용할 수 있기 때문에,WSL 2를 반드시 설치할 필요는 없다. 다만, WSL 2 기반 Docker는 리소스 절약과 Linux 환경 통합 측면에서 더 나은 선택일 수 있다.  관리자 권한으로 PowerShell을 실행 후 아래 명령어 입력 (WSL 2 설치)wsl --install위 명령어는..
도메인 주도 설계 (DDD) 도메인 주도 설계란?도메인 주도 설계(Domain-Driven Design, DDD)는 복잡한 소프트웨어를 설계하고 개발하는 방법론으로,소프트웨어의 핵심을 도메인(domain)에 집중하여 설계하는 것을 목표로 한다.도메인은 소프트웨어가 해결하고자 하는 문제 영역을 말하며, DDD는 이 문제 영역의 모델링과 설계를 중요하게 여긴다.  도메인 (Domain)소프트웨어가 해결하고자 하는 특정 문제 영역을 도메인(Domain)이라고 한다.도메인 주도 설계(DDD)에서는 도메인을 가장 중요한 요소로 삼으며, 소프트웨어 설계의 중심에 둔다. 도메인은 더 작은 하위 영역으로 나눌 수 있으며, 이를 서브도메인(Subdomain)이라고 한다.서브도메인은 문제를 명확히 정의하고 체계적으로 관리할 수 있도록 돕는다.DDD에..
Spring Boot 이메일 인증 (SMTP, Redis) Redis를 사용하는 이유 이메일 인증 기능에서 Redis를 사용하는 이유는 속도, 효율성, 간편한 데이터 관리에 있다. Redis는 인메모리 데이터베이스로, 디스크 기반 데이터베이스보다 읽기와 쓰기 속도가 훨씬 빠르다.이로 인해 인증번호와 같은 일시적인 데이터를 저장하고 검증하는 작업을 매우 빠르게 처리할 수 있다. 또한, Redis는 TTL(Time-To-Live) 설정을 지원하여 데이터에 유효 기간을 지정할 수 있다.유효 기간이 지나면 데이터가 자동으로 삭제되므로, 보안성이 강화되고 불필요한 데이터의 누적을 방지할 수 있다. Redis는 Key-Value 저장소로 설계되어 단순한 데이터 구조를 가지고 있으며,클러스터링과 복제(replication) 기능을 통해 장애 발생 시에도 데이터를 안전하게 관..
Redis를 활용한 JWT 리프레시 토큰 관리 Redis를 사용한 Refresh Token 관리의 장점Redis는 인메모리 데이터베이스로 높은 성능과 확장성을 제공하며,JWT 기반 인증 시스템에서 Refresh Token을 관리하기에 적합한 도구이다. 빠른 성능Redis는 메모리에 데이터를 저장하기 때문에 I/O 작업이 매우 빠르다.발급, 검증, 갱신 작업이 빠르게 처리되며, 대규묘 트래픽을 처리할 때에도 성능 저하를 방지할 수 있다.  만료 시간(TTL) 지원Redis는 키에 대해 TTL(Time-To-Live) 설정을 지원한다.유효기간이 지난 Refresh Token은 자동으로 삭제되어 별도의 만료 처리 로직을 작성할 필요가 없다.  중앙화된 토큰 관리Refresh Token을 Redis에 저장하면 여러 서버에서 동일한 Redis 인스턴스를 참조..
인증 / 보안 기초 (HTTPS, Hashing, Cookie, Session, 웹 보안) HTTPSHTTPS(하이퍼텍스트 전송 프로토콜 보안, Hypertext Transfer Protocol Secure)는HTTP의 보안 버전으로, 데이터 통신을 암호화하는 프로토콜이다. 기본적으로 웹 브라우저와 웹 서버 간의 데이터 전송 시에 사용되며,보안 소켓 계층(SSL) 또는 최근에는 전송 계층 보안(TLS)을 통해 암호화를 제공한다. 여러 가지 이유로 웹 트래픽이 증가함에 따라 개인 정보와 중요한 데이터의 안정성이 더 중요해 지면서,사용자와 웹 사이트 간의 통신을 보호하기 위해 HTTPS가 필요해졌다. 아래는 HTTPS의 주요 특징과 동작 방식에 대한 설명이다.  데이터 암호화HTTPS는 SSL 또는 TLS 프로토콜을 사용하여 데이터를 암호화한다.이는 데이터를 전송하는 동안 제3자가 끼어들거나 데이..
Java 람다식 (Lambda Expression) 람다식이란?람다식은 익명 함수(Anonymous Function)를 생성하기 위한 표현식으로, Java 8부터 도입되었다. 기존에 사용하던 익명 클래스를 간결하고 직관적으로 표현할 수 있도록 설계되었다.함수형 프로그래밍 개념을 자바에 도입한 기능 중 하나로, 코드를 간결하게 작성하고 가독성을 높여준다. (parameters) -> expression(parameters) -> { statements } parameters: 입력 매개변수. 입력 매개변수가 없으면 빈 괄호 () 사용.->: 람다 연산자(arrow operator).expression/statements: 실행할 코드 블록. 람다식의 주요 특징으로는 아래와 같다. 익명: 이름이 없는 함수로, 클래스나 메서드 없이도 사용할 수 있다.간결성: ..
Java 캡슐화 (Encapsulation) 캡슐화란?캡슐화( Encapsulation)는 데이터(속성)와 메서드(행위)를 하나의 단위로 묶어 외부에서의 접근을제한하는 객체지향 프로그래밍의 주요 개념 중 하나이다.  데이터 보호와 접근 제어를 통해 데이터의 무결성을 보장한다.외부 객체는 캡슐화된 객체 내부의 데이터를 직접 수정하거나 접근할 수 없으며, 객체가 제공하는 메서드(인터페이스)를 통해서만 상호작용 가능하다. 캡슐화의 특징 데이터 은닉:외부에서 객체의 **필드(변수)**에 직접 접근하지 못하도록 제한한다.일반적으로 필드는 private으로 선언하고, 필요한 경우 메서드를 통해 접근한다.메서드를 통한 접근:데이터를 조작하거나 읽는 데 필요한 메서드(Getter, Setter)를 제공한다.메서드 내부에서 입력값 검증 및 데이터 처리 로직을 추가..
Java 클래스와 메서드, 객체 (Class, Object, Method) 클래스와 메서드는 Java의 객체지향 프로그래밍(OOP)에서 핵심적인 구성 요소이다.클래스는 객체를 생성하기 위한 청사진(템플릿)이고, 메서드는 클래스 내에서 수행할 작업(기능)을 정의한다. Class (클래스)클래스는 객체의 속성(필드)과 동작(메서드)을 정의하는 틀이다.Java 프로그램은 클래스 단위로 작성되며, 클래스는 객체를 생성하기 위한 템플릿 역할을 한다. 클래스는 크게 네 가지 요소로 구성된다. 필드 (Fields): 객체의 속성을 정의 (변수).메서드 (Methods): 객체의 동작(기능)을 정의 (함수).생성자 (Constructors): 객체를 초기화하는 특별한 메서드.내부 클래스 (Inner Classes): 클래스 내부에 정의된 클래스.   클래스는 다음과 같은 특징을 가지고 있다...