Server
-
레디스(Redis)를 이용해서 락(lock)을 거는 이유?Server 2025. 5. 9. 16:42
많은 트래픽 환경에서 Redis를 이용한 중복 처리 방지 방법대규모 트래픽 환경에서 하나의 요청이 중복 실행되는 것을 방지하기 위해 분산 락(distributed lock)을 사용하는 것이 일반적입니다. 그 중 Redis를 활용한 락 처리 방식이 많이 사용됩니다.🔒 왜 Redis를 사용하는가? 빠른 속도: Redis는 인메모리 기반으로 작동하기 때문에 락 처리가 매우 빠릅니다. 분산 시스템에서의 활용성: 여러 서버에서 동시에 Redis에 접근하여 락을 확인할 수 있습니다. SETNX 명령어: Redis의 SETNX (SET if Not eXists)는 락을 구현하는 데 유용한 명령어입니다. TTL 설정 가능: 락에 만료 시간을 설정하여 데드락(deadlock)을 방지할 수 있습니다.✅ Redis..
-
Spring Boot에서 많이 사용되는 View 엔진 추천 및 장단점Server/Spring Boot 2025. 4. 29. 23:21
Spring Boot를 사용할 때 프론트엔드를 구성하기 위해 View 엔진을 선택하는 경우가 많습니다. 이 글에서는 대표적인 View 엔진 4가지를 소개하고, 각각의 장단점을 정리해보겠습니다.1. Thymeleaf 설명: Spring 공식에서 권장하는 템플릿 엔진으로 HTML 친화적입니다. 장점: HTML 파일을 그대로 열어도 구조 확인이 쉬움 Spring과의 통합이 매우 뛰어남 (예: Spring EL 지원) 조건문, 반복문 등 표현식이 직관적 단점: 복잡한 로직을 처리하기엔 다소 제약이 있음 렌더링 속도가 JSP보다 느릴 수 있음 2. JSP (JavaServer Pages) 설명: 전통적인 Java 기반 웹 애플리..
-
자주 사용되는 디자인 패턴에 대해 알아보자 (springboot)Server/Spring Boot 2025. 4. 28. 17:44
Spring Boot 개발에서 꼭 알아야 할 디자인 패턴1. 싱글턴 패턴 (Singleton Pattern)싱글턴 패턴은 객체를 하나만 생성하여 모든 클라이언트가 동일한 인스턴스를 공유하도록 하는 패턴입니다. Spring에서는 주로 @Service, @Component, @Repository 등의 어노테이션을 사용하여 빈을 생성할 때 싱글턴을 기본으로 사용합니다.import org.springframework.stereotype.Service;@Servicepublic class SingletonService { private static SingletonService instance; private SingletonService() {} public static SingletonServ..
-
JVM과 Node.js 런타임 환경 비교Server 2025. 4. 28. 14:43
1. JVM이란?JVM(Java Virtual Machine)은 Java 프로그램을 실행시키는 가상 머신입니다.운영체제 위에서 동작하며, Java 바이트코드를 기계어로 변환해 실행하는 역할을 합니다.JVM은 강력한 멀티스레드 환경을 지원하며, 동시에 여러 작업을 병렬 처리하는 데 강점을 가집니다.2. Node.js란?Node.js는 V8 JavaScript 엔진 위에서 동작하는 런타임입니다.싱글 스레드를 기반으로 하지만, 비동기 I/O와 이벤트 루프(Event Loop)를 이용하여 높은 동시성을 지원합니다.특히 네트워크 서버 개발에 최적화되어 가볍고 빠른 처리 속도를 자랑합니다.3. JVM과 Node.js 기본 비교항목JVMNode.js런타임 언어Java, Kotlin 등JavaScript스레드 모델멀티..
-
[docker] docker-compose (도커컴포즈) 란?Server/Docker 2025. 4. 24. 17:59
🐳 도커 컴포즈(Docker Compose)란?Docker Compose는 여러 개의 컨테이너를 docker-compose.yml 파일 하나로 정의하고, 한 번에 실행할 수 있도록 해주는 도구입니다.예를 들어, 웹 애플리케이션을 구성할 때 웹 서버, DB 서버를 각각 컨테이너로 관리하면서도, 하나의 명령어로 손쉽게 실행/중지할 수 있습니다.🔧 Docker Compose 설치 방법📌 Linux에서 설치sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/..
-
[docker] 자주 사용하는 명령어Server/Docker 2025. 4. 24. 17:45
자주 사용하는 Docker 명령어 정리1. 도커 버전 확인docker --version설치된 도커의 버전을 확인합니다.2. 도커 이미지 목록 확인docker images로컬에 저장된 도커 이미지 리스트를 확인할 수 있습니다.3. 컨테이너 목록 확인docker ps현재 실행 중인 컨테이너들을 확인합니다. -a 옵션을 붙이면 중지된 컨테이너까지 모두 표시됩니다.4. 이미지로 컨테이너 실행docker run [옵션] 이미지이름이미지를 기반으로 컨테이너를 생성하고 실행합니다. 예: docker run -d -p 8080:80 nginx5. 실행 중인 컨테이너 접속docker exec -it 컨테이너ID bash컨테이너 내부로 터미널 접속을 할 수 있습니다.6. 도커 컨테이너 시작/중지docker start 컨테..
-
리눅스 데몬(daemon) 이란?Server/Linux 2025. 4. 23. 11:33
🐧 리눅스에서 데몬(daemon)이란?데몬(daemon)은 리눅스 또는 유닉스에서 백그라운드에서 지속적으로 실행되는 프로세스를 말합니다. 시스템 부팅 시 자동 실행되어 사용자 개입 없이 동작합니다.✨ 왜 데몬이 필요한가?데몬은 시스템 서비스 제공에 핵심 역할을 합니다. 데몬 이름역할 sshdSSH 원격 접속 처리 cron예약된 작업 자동 실행 httpd웹 서버 서비스 제공 mysqldMySQL 데이터베이스 실행🔐 데몬의 권한 및 설정✅ 기본 권한대부분의 데몬은 root 권한으로 실행되며, 보안을 위해 전용 사용자 계정을 사용하는 경우도 있습니다.✅ 실행 사용자 변경 예시[Service]ExecStart=/usr/bin/mydaemonUser=www-dataGroup=www-data✅ 권한 제..
-
java 어플리케이션에서 시스템 명령어 사용하려면?Server 2025. 4. 23. 11:29
✅ Java의 ProcessBuilder란?ProcessBuilder는 Java 5부터 추가된 클래스이며, 외부 프로그램이나 쉘 명령어를 실행할 수 있게 도와주는 도구입니다.✨ 언제 사용하나? 운영체제 명령어를 호출해야 할 때 Java 외부 프로그램을 실행해야 할 때 외부 프로그램의 실행 결과를 Java에서 읽거나 처리할 때 백엔드 시스템이 외부 CLI 툴과 연동될 때📌 주요 메서드와 특징 메서드 / 기능설명 command(List)실행할 명령어 설정 directory(File)작업 디렉토리 설정 environment()환경 변수 설정 start()프로세스 시작 redirectInput/Output/Error()입출력 리디렉션 가능🧪 실전 예제✅ 예제 1: 디렉토리 목록 출력Proc..