2025/02 36

[Docker] Docker 정리

🚀 Docker는 컨테이너(Container) 기반 가상화 기술로, 애플리케이션과 환경을 패키징하여 어디서든 동일한 환경에서 실행할 수 있도록 도와주는 도구입니다. 이 문서에서는 Docker의 개념, 주요 명령어, 이미지 & 컨테이너 관리, 네트워크, 볼륨, 최적화 전략, Docker Compose 및 실전 활용법을 정리합니다. ⚡ 1. Docker란?Docker는 컨테이너(Container) 기반 가상화 기술로, 애플리케이션과 실행 환경을 패키징하여 어디서나 동일한 환경에서 실행할 수 있도록 도와준다. ✅ Docker의 주요 특징 • 경량 가상화 → 기존의 VM과 달리 호스트 OS 커널을 공유하여 빠르고 가벼움 • 일관된 실행 환경 → 운영체제(OS)와 애플리케이션을 묶어서 실행 가능 • 애플리케이션..

Infra/Container 2025.02.28

트러블 슈팅

1️⃣ 트러블슈팅(Troubleshooting)이란?트러블슈팅(Troubleshooting) 은 시스템, 소프트웨어, 네트워크 등에서 발생한 문제를 분석하고 해결하는 과정을 의미함.개발자, 시스템 관리자, 네트워크 엔지니어 등 IT 분야에서 필수적인 역량임. 💡 트러블슈팅의 핵심 목표:✅ 문제의 원인 파악 → 증상 분석, 로그 확인, 테스트 수행✅ 해결책 적용 → 코드 수정, 설정 변경, 서버 재시작, 패치 적용✅ 재발 방지 → 문제 해결 후, 근본적인 원인을 해결하여 동일한 문제 발생 방지 2️⃣ 트러블슈팅 과정 (Troubleshooting Steps)트러블슈팅은 단순한 버그 수정이 아니라 체계적인 문제 해결 과정을 따르는 것이 중요함.일반적인 문제 해결 과정은 다음과 같음. 🛠 1) 문제 정의 ..

CS 2025.02.28

[Elasticsearch] 엘라스틱서치

1️⃣ 엘라스틱서치(Elasticsearch)란?Elasticsearch는 분산 검색 및 분석 엔진으로, 대량의 데이터를 실시간으로 저장, 검색, 분석할 수 있는 NoSQL 기반의 검색 엔진임.기본적으로 Apache Lucene을 기반으로 하며, JSON 기반 REST API를 제공하여 사용이 간편함. 💡 주요 특징:✅ 빠른 검색 속도 → 역색인(Inverted Index) 기술을 사용하여 빠르게 검색 가능✅ 확장성(Scalability) → 분산 시스템을 지원하여 대량의 데이터 처리 가능✅ RESTful API 지원 → JSON 기반 요청을 사용하여 손쉽게 데이터 조회✅ 실시간 분석 가능 → 로그, 메트릭, 이벤트 데이터 등을 실시간으로 분석 2️⃣ 엘라스틱서치와 관계형 DB 비교비교 항목엘라스틱서치..

DB/Elasticsearch 2025.02.27

[Spring Boot] 멀티 모듈 프로젝트

Spring Boot 프로젝트에서 멀티 모듈(Multi-Module) 프로젝트란, 하나의 루트 프로젝트에서 여러 개의 서브 모듈을 관리하는 방식을 의미함.이렇게 하면 코드 재사용성, 유지보수성, 의존성 관리가 쉬워지고, 각 모듈을 독립적으로 개발 & 배포할 수 있음. 🛠️ 1. 멀티 모듈이란?멀티 모듈 프로젝트는 하나의 루트 프로젝트 안에서 여러 개의 서브 모듈을 포함하는 구조임.각 서브 모듈은 독립적인 기능을 담당하며, 필요에 따라 다른 모듈과 연결될 수 있음. 💡 멀티 모듈의 장점✅ 코드 재사용성 → 공통 기능을 하나의 모듈로 분리하여 여러 모듈에서 사용 가능✅ 모듈별 독립적인 개발 → 특정 모듈만 빌드/테스트 가능✅ 빠른 CI/CD 적용 → 변경된 모듈만 빌드하여 배포 가능✅ 의존성 관리 용이 ..

[Spring Boot] @TestMethodOrder

📌 1. @TestMethodOrder란? @TestMethodOrder는 JUnit 5에서 테스트 메서드 실행 순서를 지정하는 어노테이션임.기본적으로 JUnit은 테스트 메서드를 실행할 순서를 보장하지 않음.하지만, 특정한 실행 순서가 필요한 경우 @TestMethodOrder를 사용하면 테스트를 원하는 순서대로 실행할 수 있음. 📌 2. @TestMethodOrder 기본 사용법✅ (1) 테스트 실행 순서를 @Order로 지정 • @TestMethodOrder(OrderAnnotation.class)를 사용하면 각 테스트 메서드에 @Order(n)을 부여하여 실행 순서를 지정할 수 있음.import org.junit.jupiter.api.*;@TestMethodOrder(MethodOrderer...

[Kotlin] 함수형 프로그래밍과 불변성

✅ 함수형 프로그래밍과 불변성(immutability) 완벽 가이드 함수형 프로그래밍(Functional Programming, FP)은 수학적 함수의 개념을 기반으로 한 프로그래밍 패러다임입니다.**불변성(immutability)**은 함수형 프로그래밍에서 가장 중요한 개념 중 하나이며,코드의 예측 가능성, 안전성, 유지보수성을 향상시키는 역할을 합니다. 🔹 1. 함수형 프로그래밍이란?함수형 프로그래밍(Functional Programming, FP)은 “순수 함수(Pure Function)“를 기반으로 하는 프로그래밍 방식입니다. ✅ 함수형 프로그래밍의 핵심 원칙 1. 순수 함수(Pure Function) 사용 → 같은 입력이 들어오면 항상 같은 출력 반환. 2. 불변성(Immutability) 유..

BE/Kotlin 2025.02.24

[Spring Boot, JPA] 리플렉션

✅ JPA는 객체를 데이터베이스와 매핑할 때 “리플렉션(Reflection)“이라는 기능을 사용합니다.✅ 리플렉션을 사용하면 클래스 내부의 정보(필드, 메서드, 생성자 등)를 실행 중(runtime)에 확인하고 변경할 수 있습니다.✅ JPA는 리플렉션을 통해 엔티티 객체를 생성하고 필드 값을 직접 주입합니다. 1. 리플렉션(Reflection) 기본 개념🔹 (1) 일반적인 객체 생성 방식 자바에서 객체를 생성할 때 new 연산자를 사용합니다.public class Member { private String name; public Member(String name) { this.name = name; }}public class Main { public static voi..

리눅스 명령어

✅ 디렉토리 이동 (cd)pwd # 현재 위치 확인cd ~ # 홈 디렉토리로 이동cd /경로 # 절대 경로로 이동cd ./폴더명 # 상대 경로 이동 ./ 는 대부분 생략 가능함cd .. # 상위 폴더 이동cd - # 이전 디렉토리로 이동 ✅ 디렉토리 생성 및 삭제 (mkdir, rmdir, touch)mkdir 폴더명 # 디렉토리 생성mkdir -p A/B/C # 여러 개의 디렉토리 한 번에 생성rmdir 폴더명 # 빈 디렉토리 삭제rm 파일명 # 파일 삭제rm -r 폴더명 # 비어있지 않은 디렉토..

Infra/OS 2025.02.23

쉘에 대한 개념

Linux에서 **“쉘(Shell)”**은 사용자와 운영체제 커널(Kernel) 사이에서 명령을 해석하고 실행하는 인터페이스입니다.쉘을 통해 파일 관리, 프로세스 실행, 시스템 설정 변경, 자동화 스크립트 실행 등이 가능합니다. 🔹 1. 쉘(Shell)이란?✅ (1) 쉘(Shell)의 역할 • 사용자가 입력한 명령어를 커널(Kernel)에 전달하여 실행하는 인터페이스. • CLI(Command Line Interface, 명령줄 인터페이스) 기반으로 동작. • 스크립트를 작성하여 자동화(Auto-Scripting) 가능. 📌 쉘을 쉽게 이해하면? • 운영체제의 “명령어 해석기” • 사용자 ↔ 쉘(Shell) ↔ 커널(Kernel) ↔ 하드웨어 ✅ (2) 쉘(Shell)의 동작 과정1. 사용자가 명령 ..

Infra/OS 2025.02.22

[Kotlin] JPA에서 필드에 final을 붙이지 않는 이유 (val, var)

Spring Boot의 JPA 엔티티에서는 일반적으로 필드를 private으로 선언하고 final을 붙이지 않는 이유는 JPA의 프록시(proxy) 및 리플렉션(reflection) 메커니즘 때문. ✅ 1. JPA는 엔티티 객체를 리플렉션(Reflection)으로 생성해야 한다📌 final을 사용하면 JPA가 필드를 초기화할 수 없음 JPA는 기본 생성자(No-Arg Constructor)를 사용하여 엔티티 객체를 리플렉션으로 생성합니다.즉, JPA가 객체를 만들 때 필드에 값을 할당할 수 있어야 합니다. 🚨 private final을 사용하면 발생하는 문제@Entitypublic class User { @Id @GeneratedValue(strategy = GenerationType.ID..

BE/Kotlin 2025.02.21