전체 글 208

Kubernetes ConfigMap과 Secret을 사용한 환경변수 관리

💡 ConfigMap- 여러 가지 설정 정보들을 기록해두는 공간이다 - 설정값(환경변수, 설정파일 등)을 키-값 형태로 저장하고, Pod에 주입할 수 있게 해주는 오브젝트이다 - 여러 종류의 Pod에 동일하게 적용해야 하는 환경 변수가 있을 때- Pod 안 애플리케이션의 동작을 바꾸고 싶을 때 (예: 타이틀, 포트, 외부 API 주소)- 같은 컨테이너 이미지이지만 환경마다 설정을 다르게 하고 싶을 때- 보안 민감도가 낮다 (예: 앱 이름, 공개 포트, 타이틀 등)- 텍스트 데이터만 저장 가능하다- Pod 안에서 환경 변수, 커맨드라인 인자, 파일 등으로 전달 가능하다 💡 Secret- 비밀번호, API 토큰, 인증 정보 등 민감한 데이터를 저장하고, Pod에 안전하게 주입하는 오브젝트이다 - 데이..

IT/Cloud & DevOps 2025.04.25

GKE 노드풀과 클러스터 오토스케일러

💡 NodeGroup - 노드 그룹이란 같은 역할을 하기 위해 모인 여러 개의 노드를 묶어서 부르는 용어이다- 노드(서버)들의 묶음을 의미하며, 주로 클라우드 환경에서 관리되는 노드 집합을 말한다 - 노드 그룹은 쿠버네티스의 오브젝트가 아니고, 편의를 위해 만든 개념이다 (쿠버네티스는 이 존재를 모른다)- AWS, GCP, Azure와 같은 클라우드에서 노드 그룹(Node Group)이라는 개념은 자동 스케일링, 업데이트, 관리 등을 쉽게 하기 위해 사용된다 - 쿠버네티스 클러스터 안에는 실제로 다양한 사양의 노드가 존재할 수 있다 => 여러 노드를 용도별로 분류해놓아 관리의 편의성을 높인다 - 실제 대규모 환경에서는 노드의 개수도 매우 많기 때문에 이를 그룹화하여 노드 그룹으로 관리하는 경우가 ..

IT/Cloud & DevOps 2025.04.24

Kubernetes의 Node와 Pod, Pod의 리소스 설정 (Request, Limit)

💡 Node 와 Pod- Node는 Kubernetes 클러스터에서 실제로 Pod가 실행되는 가상머신(또는 물리 서버) 이다- 쿠버네티스 안에서 실행 중인 Pod들은 논리적인 단위이기 때문에, 실제로는 물리적인 컴퓨터인 Node 안에서 프로세스로써 실행이 되는 것이다 - 파드는 언제나 노드 상에서 동작한다.- 노드는 쿠버네티스에서 워커 머신을 말하며 클러스터에 따라 가상 또는 물리 머신일 수 있다.- 각 노드는 컨트롤 플레인에 의해 관리된다.- 하나의 노드는 여러 개의 파드를 가질 수 있고, 쿠버네티스 컨트롤 플레인은 클러스터 내 노드를 통해서 파드에 대한 스케쥴링을 자동으로 처리한다.- 컨트롤 플레인의 자동 스케줄링은 각 노드의 사용 가능한 리소스를 모두 고려한다.- Node 안에는 Kubelet, ..

IT/Cloud & DevOps 2025.04.24

ReplicaSet : 정해진 수의 Pod을 유지시켜주는 관리자

💡 ReplicaSet - Pod을 관리하는 쿠버네티스 오브젝트 - 쿠버네티스에서 pod의 개수를 유지하는 역할을 하는 리소스 - ReplicaSet 은 실행되는 Pod 개수에 대한 가용성을 보증하며 지정한 Pod 개수만큼 항상 실행될 수 있도록 관리한다- 예를 들어, 웹서버 nginx를 3개 띄우고 싶다 => ReplicaSet이 Pod 3개가 모두 살아 있는지 계속 감시하고, 하나가 죽으면 자동으로 다시 생성해준다. 너무 많으면 초과된 Pod은 삭제해준다 - ReplicaSet의 목적은 Replica Pod 집합의 실행을 항상 안정적으로 유지하는 것이다- 이처럼 ReplicaSet 은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다 - ReplicaSet 을 정의하는 필드는 획..

IT/Cloud & DevOps 2025.04.21

Pod : 쿠버네티스에서 컨테이너 실행하는 방법

💡 Pod- 쿠버네티스에서 다루는 가장 기본적인 단위를 의미하는 오브젝트이다 - 쿠버네티스에서 가장 기본이 되는 배포 단위이자, 컨테이너를 감싸는 논리적인 단위이다 - 컨테이너 여러개를 묶어서 하나의 역할을 하는 작은 가상의 컴퓨터처럼 동작한다- 내부에 있는 컨테이너들은 같은 IP와 포트를 공유하고, 같은 네트워크 공간을 사용한다 - 같은 pod 안에서는 같은 포트를 공유할 수 없다 - 일반적으로 하나의 컨테이너만 포함하는 구조가 많다 (유지보수 & 디버깅을 위해) | pod 안에 여러 컨테이너를 넣는 이유- 하나의 기능을 완성하려면 여러 컴포넌트가 필요하다 - 여러 앱을 하나의 컨테이너에 넣다 보면 문제를 파악하는데 어려움을 겪을 수 있다 - 일반적으로 컨테이너 하나에는 앱을..

IT/Cloud & DevOps 2025.04.21

컨테이너 레지스트리란? GCP Artifact Registry 로 실습해보기

💡컨테이너 레지스트리란?- 컨테이너 이미지를 저장하고 관리하는 공간이다- 도커 이미지를 만들면, 그 이미지를 어디엔가 저장해두고, 필요할 때 꺼내서 실행해야 한다 - 그 저장소가 바로 컨테이너 레지스트리(Container Registry) 이다 - 도커 이미지가 없으면 컨테이너를 실행할 수 없다- 다음과 같은 작업이 필요하다 - 이미지를 만든다 (docker build) - 어딘가에 저장한다 (docker push) - 저장된 이미지를 다른 서버나 클러스터에서 가져온다 (docker pull)- 이 모든 흐름의 중심이 되는 것이 레지스트리이다 | 퍼블릭 vs 프라이빗 레지스트리 설명대표 서비스 퍼블릭 레지스트리누구나 접근 가능, 검색 가능Docker Hub프라이빗 레지스트리소유자 ..

IT/Cloud & DevOps 2025.04.20

클라우드 환경에서 쿠버네티스 클러스터 만들기

💡 쿠버네티스- 컨테이너화된 애플리케이션을 자동으로 배포, 관리, 확장(스케일링)해주는 오케스트레이션 도구다 - 쿠버네티스 플랫폼을 이용하면 컨테이너 기술을 이용해서 만들어졌기 때문에 대규모 서비스 환경을 운영하기 위한 2가지 요소 "고가용성", "내결함성"을 자동으로 챙길 수 있다 - 운영체제에 상관없이 개발자의 의도대로 서비스가 운영된다 💡 컨테이너 오케스트레이션- 여러 개의 컨테이너를 자동으로 배포하고, 연결하고, 복구하고, 확장하는 것이다 - 복잡한 컨테이너 운영이 필요할 때, 자동으로 운영해주는 툴 = 컨테이너 오케스트레이션 툴- 컨테이너 오케스트레이션 툴은 쿠버네티스가 대표적이며, 이외에도 다양한 툴들이 있다 - Kubernetes, AWS ECS, Docker Swarm, A..

IT/Cloud & DevOps 2025.04.19

도커 이미지 만들어 보기

💡도커 이미지- 도커 이미지(컨테이너 이미지)는 앱을 실행시키기 위한 환경 설정부터 각종 파일까지 앱을 위한 모든 구성 요소를 하나로 패키징 한 파일이다 - 도커 이미지를 실행시켜서 컨테이너를 만든다 | 도커 이미지의 구조 (Layer 기반)- 도커 이미지는 레이어(layer) 라는 개념으로 구성되어 있다- 이미지가 변경될 때마다 새로운 레이어가 추가된다 - 이 레이어는 캐시로 재사용 가능해서 빌드 속도가 빠르다 예)FROM ubuntu:20.04 # 베이스 레이어RUN apt install curl # 새로운 명령 = 새로운 레이어COPY . /app # 또 다른 레이어 | 도커 이미지는 아래와 같은 원리로 만들어진다 1. 가장 기본이 되는 빈 도커 이미지..

IT/Cloud & DevOps 2025.04.19

도커 사용해보기

🔶 도커 설치하기 2025.04.12 - [IT/Cloud & DevOps] - Windows 11 Home 에서 Docker 설치 Windows 11 Home 에서 Docker 설치🔶 Docker란 ?- 어플리케이션을 개발, 배포 및 실행하기 위한 플랫폼 및 도구 모음이다- 애플리케이션을 컨테이너(container) 단위로 묶어 운영체제와 상관없이 어디서든 실행할 수 있게 해주는 가상iamsh.tistory.com 🔶 도커 이미지 다운로드 받아 실행 해보기도커로 만든 앱을 다운받아야 하는데 이런 앱을 '도커 이미지', '컨테이너 이미지' 라고 한다 ✅ 도커 이미지 다운docker pull nginx:latest- Docker Hub 에 요청해서 nginx 이미지 중 latest 버전을 다운로드..

IT/Cloud & DevOps 2025.04.17

컨테이너

💡 컨테이너 기술- 컨테이너 기술은 다양한 구현체가 존재하며, 그 중 가장 대표적인 플랫폼이 바로 ‘도커’ 이다- 도커는 도커 플랫폼 자체를 의미하기도 하지만, 컨테이너 기술을 부르는 대명사로도 자주 쓰인다 💡 컨테이너- 어떤 프로그램을 실행하기 위해 환경과 실행파일을 통째로 하나로 묶어서 실행할 수 있도록 하는 기술이다- 컨테이너 기술로 실행되는 앱을 의미한다 💡 컨테이너 기술과 쿠버네티스- 쿠버네티스는 컨테이너 기술을 바탕으로 복잡한 운영환경을 잘 운영할 수 있도록 도와준다 - 최신 버전의 쿠버네티스는 컨테이너 기술 중 conatainerd, CRI-O와 같은 플랫폼을 사용한다- 컨테이너 플랫폼은 OCI 라는 표준 인터페이스를 따르고 있기 때문에 거의 호환되어 도커로 실습이 가능하다 -..

IT/Cloud & DevOps 2025.04.17

Kubernetes 쿠버네티스

💡 Kubernetes 클러스터란? 쿠버네티스( Kubernetes, K8s )란?컨테이너로 구성된 애플리케이션을 효율적으로 관리해주는 오픈 소스 플랫폼이다. 이를 통해 여러 서버에 걸쳐 수백, 수천 개의 애플리케이션을 자동으로 배포하고, 실행하고, 확장할 수 있다. 컨테이너화란?컨테이너는 애플리케이션을 실행하는 데 필요한 코드, 라이브러리, 설정 파일 등을 하나로 묶은 실행 단위이다. 이 방식은 어느 환경에서나 동일하게 작동하도록 해주며, "한 번 만들면 어디서든 실행 가능"한 장점이 있다. 쿠버네티스 클러스터란?쿠버네티스 클러스터는 여러 대의 서버(노드)를 하나로 묶어서, 컨테이너화된 애플리케이션을 배포하고 운영할 수 있는 구조를 말한다.클러스터는 크게 두 가지 역할로 나뉜다.- 컨트롤 플레인:..

IT/Cloud & DevOps 2025.04.15

[프로그래머스 64065] [Java] 튜플

1. 문자열 파싱: {{2},{2,1},{2,1,3},{2,1,3,4}} → [[2], [2,1], [2,1,3], [2,1,3,4]] 형태로 바꾸기2. 튜플 길이 순 정렬: 가장 짧은 배열부터 순서대로 3. LinkedHHashSet을 이용해 이미 포함된 원소는 제외하면서 추출📝 Solutionimport java.util.ArrayList;import java.util.Arrays;import java.util.Comparator;import java.util.LinkedHashSet;import java.util.List;import java.util.Set;public class 카카오_튜플 { public int[] solution(String s) { /* {{}} 제거, ..

Java String 클래스

String 클래스의 메서드들을 계속 잊어버려 복습겸 다시 정리해보았다. 🔖String 클래스- Java에서 문자열을 다룰 때 가장 기본이 되는 클래스- String 클래스는 문자열 데이터를 다루기 위한 불변(Immutable) 객체이다 - 한 번 생성된 문자열은 변경할 수 없으며, 문자열을 수정하는 것처럼 보이는 작업은 모두 새로운 문자열 객체를 생성하는 방식으로 처리된다 👉🏼 실제로는 새로운 문자열 객체가 생성된다 String str = "hello";str = str + " world"; 불변성 (Immutable)문자열을 수정할 수 없으며, 수정 시 새로운 객체가 생성된다객체 생성 방식문자열 리터럴로 생성하거나, new String()으로 생성할 수 있다 문자열 상수 풀 (String Po..

IT/JAVA 2025.04.15

Windows 11 Home 에서 Docker 설치

🔶 Docker란 ?- 어플리케이션을 개발, 배포 및 실행하기 위한 플랫폼 및 도구 모음이다- 애플리케이션을 컨테이너(container) 단위로 묶어 운영체제와 상관없이 어디서든 실행할 수 있게 해주는 가상화 플랫폼이다- "한 번 만들면 어디서든 실행된다"는 개발-배포 일관성이 강점이다- 기존의 무거운 가상머신(VM)과 달리, 빠르고 가볍고 유연하다- Docker가 호스트 OS의 커널을 공유하고, 전체 운영 체제를 가상화하지 않기 때문이다 | 컨테이너- 컨테이너는 애플리케이션과 그 실행 환경을 함께 묶은 독립 실행 단위이다- 실행에 필요한 코드, 설정, 라이브러리, 시스템 도구 등을 포함한다- 호스트 OS의 커널을 공유하므로 가볍고 빠르다- Docker 컨테이너는 어플리케이션과 그 어플리케이션이 의존..

IT/Cloud & DevOps 2025.04.12

JMH (JMH 라이브러리를 활용한 Java 코드 성능테스트)

JMH 란?- Java Microbenchmark Harness- Java 공식 성능 측정 도구- OpenJDK 팀에서 만든 라이브러리로, 마이크로 벤치마크를 정밀하게 측정할 수 있게 도와준다.특징- JIT(Just-In-Time) 최적화 고려- 워밍업 시간, 반복 횟수 조정 가능- 평균/최댓값/표준편차 등 정밀 통계 제공- GC와 캐시 등 JVM 영향 최소화 ( 실행 환경 )Gradle 8.10.2Java 17VS CodeWindows 11 ✅ Gradle 프로젝트 생성 더보기VS Code 에서  단축키  Ctrl+Shift+PCreate Java Project 선택 Gradle 선택 Groovy 선택프로젝트명 입력   ✅ build.gradle 설정/* * This file was generated ..

IT/JAVA 2025.04.11

ArrayList vs LinkedList

|  컬렉션 프레임워크- 자바에서 데이터를 구조적으로 저장하고 관리학 위한 인터페이스 + 클래스 모음- 인터페이스로 기능을 정의하고  =>  클래스에서 구체적으로 구현한다  |  핵심 인터페이스 구조Map은 Collection을 상속하지 않는다 ※|  주요 인터페이스 + 대표 구현 클래스 ✅ List (순서 O, 중복 O)구현체특징ArrayList배열 기반, 인덱스 접근 빠름LinkedList노드 기반, 삽입/삭제 빠름VectorArrayList와 유사하지만 동기화됨StackVector 상속, LIFO 구조 ✅ Set (순서 X, 중복 X)구현체특징HashSet순서 없음, 빠름LinkedHashSet입력 순서 유지TreeSet자동 정렬 (Comparable or Comparator) ✅ Queue / D..

IT/JAVA 2025.04.08

코드 실행시간 비교

프로그래머스 문제를 풀다가 코드 실행 시간을 비교해 보고 싶었다.  📝  Java에서 성능 측정을 위한 헬퍼 클래스작업을 여러 번 실행하여 평균 실행 시간을 측정하고 결과를 출력제네릭을 사용하여 다양한 타입의 작업을 처리 package Java.helpers;public class BenchmarkHelper { /** * 작업을 여러 번 실행하여 평균 실행 시간 측정하고 결과를 출력한다. * @param name : 벤치마크 테스트 이름 * @param iteration : 작업 반복 횟수 * @param task : 벤치마크 테스트에서 실행할 작업 */ public static void runBenchmark (String name, int it..

IT/JAVA 2025.03.26