Recommend
-
2022년 회고
2022년 돌아보기 회고를 할 때쯤 그동안의 스스로를 평가한다. 어떻게 살았나, 잘 살았나. 머릿속으로는 막연하도록 한참 부족한 것 같다. 하지만, 글을 정리하며 꽤 많은 것을 이루었음을 깨달을 때 "잘 살고 있나 보다" 생각이 든다. 그래서 회고가 기다려지나보다. 스스로의 자책이 깊어질 때, 잘 가고 있다고 더 나아가도 된다고 길을 터준다. 이번 해도 지난 해 못지않게 큰 변화가 일어났다. 다만, 깊은 암울과 좌절스러웠던 지난해와는 상반되게, 희망찼고 밝았다. 이번 해 목표를 만족스럽게 이루었다. 지난 해, 2021년 회고에서 정한 목표와, 2022년 상반기 회고를 통해 새로 다짐한 목표들도 이루어 나갔다. 아침 6시에 하루를 시작하고, 운동을 한 후 도시락을 만들고, 출근 버스에서 뉴스레터나 책을 읽..
-
2023년 회고
2023년 돌아보기 이번 해에는 마치 세상의 주인공이 된 것처럼 믿기지 못할 일들이 일어났다. 먼 훗날에도 가슴 한편에 자리 잡을 다양한 일들이, 커다란 마일스톤이 된 해였다. 많은 일들을 다 적지 못하는 게 아쉽지만, 본 글은 본인의 성장 과정을 적는 기회로 가져가려 한다. 1/ 경험 일 년 전, 세상이 너무 좁게 느껴졌다. 기술 공부로는 해결되지 않는 무엇인가였다. 세상을 배우고 싶었고, 미지라는 두려움에 도전해보고 싶었다. 22년에 정한 23년의 KPT - Keep 중 '도전'이 있었다. 계속해서 도전하자. 도전이 만드는 그려지지 않은 미래가 무섭고, 두렵다. 안주하는, 안정적인 삶도 나쁘지 않다. 하지만 지금 본인의 시기에는 아니다. 조금이라도 어릴 때, 조금이라도 더 큰 수용력을 가질 때, 성..
-
Kotlin, 어렵지 않게 사용하기
안녕하세요. 코틀린 도장깨기를 하려고 시리즈로 정리 중입니다. 최종적으로 코프링 데모 프로젝트를 만들어보고 싶어 시작했습니다 💪🏻 코드는 Github 링크에서 확인하실 수 있습니다. 정리를 위한 코드는 아니고, 스스로 테스트하기 위한 코드이니 참고해주세요. | Release | Kotlin 1.9.0 Release, 제대로 살펴보기 | Language | :: Basic Kotlin, 어렵지 않게 사용하기 - 기초 (1) Kotlin, 어렵지 않게 사용하기 - 함수 (2) Kotlin, null 어렵지 않게 다루기 :: Coroutine Kotlin, 코루틴 제대로 이해하기 - (1) Kotlin, 코루틴 제대로 이해하기 - (2) :: Object Kotlin, 어렵지 않게 사용하기 (3) - Obje..
-
Docker Engine, 제대로 이해하기 (1)
📌 Docker Series > Docker Engine, 제대로 이해하기 (1) - docker engine deep dive Docker Engine, 제대로 이해하기 (2) - namespace, cgroup Docker Network, 제대로 이해하기 (1) - libnetwork Docker Network, 제대로 이해하기 (2) - bridge, host, none drivers Docker, 제대로 사용하기 - Commands 안녕하세요. 오늘은 Docker Engine에 대해 깊게 다루려고 합니다. 이 포스팅의 목적은 dockerEngine의 내부 구조와 동작원리 등을 최대한 자세히 다루는데 있습니다. 이 글을 읽는 독자가 Docker image, container 등 기본적인 개념을 이해..
-
Kubernetes Deployment, 제대로 이해하기
본 포스팅은 Kubernetes Core Concept 중, Deployment Object의 개념과 사용법을 익히도록 합니다. 🔗 Kubernetes Series 모든 Kubernetes 시리즈를 확인하시려면 위를 참고해 주세요. 본 포스팅에서는 Kubernetes을 사용하며 반드시 알아야할 개념 중 하나인 Deployment를 살펴보고자 합니다. Deployment? A Deployment provides declarative updates for Pods and ReplicaSets Deployment는 이름 그대로, 쿠버네티스에서 배포를 위한 객체입니다. 기능적으로는, Pod와 ReplicaSet를 배포를 관리합니다. 운영자가 Deployment에서 원하는 상태desired status를 설정하여..
-
Kubernetes Architecture, 제대로 이해하기
본 포스팅은 Kubernetes Architecture 를 이해하고 구성 요소들의 개념과 역할을 이해하는 것을 목표합니다. 🔗 Kubernetes Series 모든 Kubernetes 시리즈를 확인하시려면 위를 참고해 주세요. 본 포스팅에서는 Kubernetes 혹은 K8s 을 살펴보려 합니다. 이론과 실습 중 무엇이 선행되어야 할지 생각해봤을 때, 제 기준에서 Kubernetes는 개념 정도만 먼저 알아보고, 실제로 사용해보며 깊이 들어가는 것이 좋지 않을까 싶습니다. 어떤 역할을 하는, 왜 생겨난 서비스인지를 파악한 후, 무작정 따라해보고 이유를 찾아가며 배우면 좋을 듯 합니다. 그럼 지금부터 쿠버네티스 아키텍처에 대한 전반적인 내용을 살펴보도록 하겠습니다. Kubernetes의 목적은 컨테이너들을 ..
-
Design Patterns, 제대로 이해하기
안녕하세요. GoF 디자인 패턴을 정리하고자 합니다. 디자인 패턴은 일주일 전부터 공부를 시작했는데, 스스로 설명하듯 적는게 익히는데 도움이 클 것같아 정말 오랜만에 시리즈로 포스팅하려 합니다 👊🏻 아래의 책들을 보며 정리했습니다. - GoF Design Patterns - 쉽게 배워 바로 써먹는 디자인 패턴 - Head First Design Patterns, 2nd Edition 아래는 디자인 패턴을 분류한 테이블입니다. Scope에 따라 Class와 Object로 분류합니다. Class는 상속과 관련된 패턴이며, Object는 연관된 객체들과 관련된 패턴입니다. 제가 이해하기로는 Class가 조금 더 수직적인 관계를 다루지 않나 싶습니다. Creational Pattern Class Scope는 객..
-
HTTP/3, 제대로 이해하기
해당 포스팅은 HTTP/3의 구조와 특징에 대해 이전 HTTP 프로토콜과 비교하여 이해하는 것을 목표로 합니다. 2022년 6월, HTTP의 세 번째 버전인 HTTP/3가 IETF(Internet Engineering Task Force) 표준으로 채택되었습니다. 새로운 표준에 어떤 특징이 있는지, 웹 상에 어떤 변화가 있을지 알아볼 필요가 있어 보이는데요. 그래서 해당 포스팅에서 HTTP/3의 등장 이유와 그 특징에 대해 알아보겠습니다. 물론, 표준으로 채택된 후 바로 웹 상에 적용되지는 않겠지만, 이를 대비해두고 준비해야할 필요는 있습니다. HTTP HTTP는 HyperText Transfer Protocol의 약자로, 링크를 통해 다른 문서로 연결될 수 있는 문서를 전송하는 규격이 정해진 규칙 체계..
-
Reactive Programming, 제대로 이해하기
Spring의 WebFlux에 대한 개념을 쉽고 정확하게 이해하는 것을 목표로 합니다. | Reactor Series | 👉🏻 Reactive Programming, 제대로 이해하기 - Reactor 제대로 이해하기, Marble Diagram - Reactor, 제대로 이해하기 - Flux Create Background 많은 서비스를 한 앱에 구현하는 monolithic 구조는 더 이상 사용하지 않습니다. 빠른 속도를 요구하는 시대에서 monolithic 구조는 문제가 점점 도태되었습니다. 대신 작게 분산된 컴포넌트를 구성하여 연결하는 microservice 구조(MSA)와 이를 서비스하는 클라우드 기반의 클러스터를 선호하게 되었습니다. Microservice 구조는 한 앱을 작은 컴포넌트로 분산시킨..
-
MySQL Architecture, 제대로 이해하기
MySQL Server의 구조를 파악하는 것이 본 포스팅의 목적입니다. MySQL Architecture TLDR; MySQL 서버는 크게 MySQL Engine과 Storage Enigne으로 구분할 수 있습니다. ✔️ MySQL Engine: 요청된 SQL 문장을 분석하거나 최적화 등 처리. 논리적인 면에서 두뇌의 역할 ✔️ Storage Engine: 손발 역할. 실제 데이터를 디스크 스토리지에 저장하거나 디스크 스토리지로부터 데이터를 읽어옴 여기서 중요한 점은 하나의 쿼리 작업은 여러 하위 작업으로 나뉘는데, 각 하위 작업이 MySQL 엔진 영역에서 처리되는지 아니면 스토리지 엔진 영역에서 처리되는지 구분할 줄 알아야 한다는 점입니다. Big Picture 위의 그림을 위에서 부터 살펴보면 Cli..
-
SQL Execution Plan, 제대로 이해하기
Execution Plan을 읽고 해석할 수 있는 것이 이 포스팅의 목표입니다. 본 포스팅은 사용된 코드나 데이터는 직접 테스트 한 내용으로, 만약 직접 테스트 해보고 싶다면 아래의 내용을 참고해주세요. Mysql Version: 8.0.26 Test DB: employees 테스트 DB는 해당 링크의 'Example Databases > employee data'에서 다운받으실 수 있습니다. 해당 테스트 DB는 아래와 같은 구조로 구성되어 있습니다. Execution Plan? 실행 계획이란, 말 그대로 SQL 문으로 요청한 데이터를 어떻게 불러올 것인지에 관한 계획, 즉 경로를 의미합니다. 지름길을 사용해 데이터를 빠르게 찾아낼 것인지, 지름길이 있어도 멀리 돌아가서 찾을 것인지 미리 확인할 수 있습..
-
Circuit Breaker, 제대로 이해하기
Circuit Breaker 마이크로 서비스 아키텍처(MSA, Micro Service Architecture)를 쉽게 말하면, 한가지 일만 잘하는 서비스들이 협업하는 아키텍처입니다. 서비스들은 HTTP 통신이나 RPC, Socket 등으로 서로 간의 통신하여 협업합니다. 많은 경우에서, 마이크로 서비스들은 특정 기능을 제공하기 위해 해당 아키텍처의 다른 서비스에게 통신을 요청합니다. 그리곤, 원하는 응답을 받아 계속해서 처리하죠. 비동기의 경우에는 달라질 수 있지만, 동기 방식에는 이런 방식으로 각 서비스가 의존적으로 구성됩니다. 이 경우의 문제점은 한 서비스에서 에러가 발생하거나 느려지면 이를 호출하는 다른 서비스들로 장애가 전파된다는 것입니다. 이를 위해 마이크로 서비스 아키텍처의 서비스들은 스스로..
Most Popular
-
Spring WebClient, 어렵지 않게 사용하기
WebClient는 스프링 5.0에서 추가된 Blocking과 Non-Blocking 방식을 지원하는 HTTP 클라이언트입니다. - Reactor, 제대로 사용하기 - Error Handling - Reactive Programming, 제대로 이해하기 👉🏻 WebClient 소개 - Spring WebClient, 제대로 사용하기 - retrieve - Spring WebClient, 제대로 사용하기 - exchange WebClient의 설정 및 요청, 응답 처리 등의 사용법을 학습하는 것이 본 포스팅의 목적입니다. ----------------- INDEX ----------------- WebClient? Create 📌 create() 📌 build() Configuration 📌 Timeout..
-
RSA, 제대로 이해하기 (1)
안녕하세요. 오늘은 요즘에 딥하게 빠져버린 암호학 중 필수 개념인 RSA (textbook-RSA)에 대해 알아보고자 합니다. **************** INDEX ***************** RSA? ✔️ Key Generation ✔️ Key Distribution ✔️ Encryption ✔️ Decryption Effective En/Decryption - square-and-multiply - CRT Attack - CCA - Broadcast attack ******************************************** 📚 RSA? RSA는 전 세계에서 가장 많이 사용되는 공개키 암호 알고리즘입니다. 오랜시간 지속해서 사용하고 있는 아주 중요한 알고리즘이라 꼭..
-
Java Date & Time, 제대로 사용하기
Java의 날짜와 시간을 제대로 다루기 위해 Date, LocalDate, LocalDateTime 의 개념을 이해하고 응용하는 것이 본 포스팅의 목표입니다. History 이제는 자바 8이 꽤나 보편화된 것 같은데요. 자바 8버전이 중요하다고 하는 이유 중 하나가 바로 "날짜"를 다루는 방식입니다. 자바 8에 새로운 날짜와 시간 API가 생긴 이유는 아래와 같은 이유가 있습니다. ✔️ Mutable 자바 8 이전의 util.Date 클래스는 mutable 하기 때문에 thead safe하지 않았습니다. public class App { public static void main(String[] args) throws InterruptedException { // mutable 한 객체 -> multi-..
-
Spring Interceptor, 제대로 이해하기
Interceptor는 컨트롤러에 들어오는 요청 HttpRequest와 컨트롤러가 응답하는 HttpResponse를 가로채는 역할을 합니다. 스프링의 Intercepter의 이해와 사용법을 익히는 것이 본 포스팅의 목표입니다. ----------------- INDEX ----------------- Interceptor? Interceptor VS Filter 📌 Filter HandlerIntercepter 📌 preHandle 📌 postHandle 📌 afterCompletion HandlerInterceptorAdapter AsyncHandlerInterceptor ---------------------------------------------- Interceptor? '가로채다' 스프링 MV..
-
DeepSORT, 제대로 이해하기
DeepSORT는 가장 널리 사용되고 있는 객체 추적 프레임워크 중 하나로, SORT(Simple Online and Realtime Tracking)을 보완 확장한 기술입니다. 📚 사전 지식 먼저 다룰 사전 지식은 DeepSORT에서 사용되는 기술들입니다. 미리 알면 DeepSORT에서 왜 사용되었는지, 이 기술을 써서 얼마나 더 좋아졌을지를 납득하기 위한 내용들입니다. DeepSORT를 한 번 훑고 보는 것도 좋고, 순서에 맞게 읽어도 좋습니다. 본인이 이해하기 쉬운 순서가 무엇인지 생각하고 읽는 것을 권장합니다. ✔️ Kalman filter 칼만 필터는 간단하게 소개하자면, 이전 프레임에 등장한 개체를 이용하여 다음 프레임의 개체의 위치를 예측하고 측정합니다. 위의 그림에서 Predicted st..
-
JDK 17 ~ 21 Release, 제대로 이해하기
본 포스팅은 openJDK 17 부터 21 까지의 변경 사항을 확인하고, JDK 21을 사용할 때 개발자로서 알아두면 좋을 내용을 학습합니다. Previous Series: 📌 JDK 11 ~ 17 Release, 제대로 이해하기 👉🏻 JDK 17 ~ 21 Release, 제대로 이해하기 (current) 지난 9월 19일 (2023년), Open JDK LTS인 JDK 21 가 프로덕션에 적용 목적의 General Availability로 릴리즈되었습니다. General Availability: Final release, ready for production use JDK 21에서는 아래 15개의 새로운 기능들을 발표했는데요. 크게 네 개의 카테고리로 분류해보면 아래와 같습니다. Core Java Li..
-
MySQL Partition, 제대로 이해하기 (1)
MySQL의 Parition 개념과 특징을 알아보는 것이 본 포스팅의 목표입니다. 안녕하세요. 이번 포스팅은 Parition에 대해 다루고자 합니다. Parition은 대용량 데이터를 처리해야한다면 반드시 알아둘 필요가 있습니다. 이번 포스팅에서는 전반적인 이해와 원리를 다루며, 이어지는 포스팅 MySQL Partition, 제대로 사용하기 (2) 에서 실제 사용법에 대해 다룹니다. 해당 포스팅의 모든 도식은 직접 그린 것으로 출처를 명시하셔야 합니다. Partition? Partition이란 논리적으로 하나의 테이블이지만 실제로는 여러 개의 테이블로 분리해서 관리하는 기능입니다. 마치 동일한 형식의 한 개의 테이블을 사용하고 있는 것 같지만, 실제적으로는 여러 개의 물리 파일로 데이터들을 분할하여 보관..
-
Spring Cache, 제대로 사용하기
Spring Cache 사용법, Annotation 등을 알아보고 설정 방식을 알아보는 것이 해당 포스팅의 목표입니다. 📌 Spring Cache Series ✔ Spring Cache, 제대로 사용하기 ✔ Caffeine Cache, 제대로 사용하기 1 ✔ Caffeine Cache, 제대로 사용하기 2 해당 포스팅에서는 Spring Cache에 대해 다룹니다. Cache를 사용하기 위해서는 CacheManager가 필요한데요. 연결되는 다음 포스팅에서는 로컬 캐시 중 성능에 유리한 Caffeine Cache를 다룹니다. ----------------- INDEX ----------------- Cache ? 📌 Cache Abstraction 📌 Cache Manager 📌 의존성 추가 @Enable..
-
Spring Security, 제대로 이해하기 - FilterChain
Spring Security의 인증, 인가 과정을 FilterChain을 살펴보며 이해하는 것이 본 포스팅의 목표입니다. 해당 포스팅은 1부 Spring Security, 어렵지 않게 설정하기의 이은 포스팅이지만, 읽는데 순서는 상관없습니다. 이해하는데 서로 도움이 되는 포스팅입니다. ----------------- INDEX ----------------- [ 1부: 설정 ] WebSecurityConfigurerAdapter HttpSecurity WebSecurity [ 2부 - 인증, 인가 동작 원리: FilterChain] 📚 Big Picture 초기화 사용자 요청 후 ? 🔗 FilterChain SecurityContextPersistenceFilter LogoutFilter Username..
-
Hexagonal Architecture, 어렵지 않게 이해하기
본 포스팅은 Hexagonal Architecture의 등장 배경과 개념을 이해하는 것을 목표로 합니다. 본 편 이후, Hexagonal Architecture를 Spring을 통해 실제로 구성하는 내용을 다룰 예정입니다. Architecture 소프트웨어 개발은 복잡합니다. 생각 없이 코드를 작성하다 보면 서로 얽히고설킨 구조가 만들어지기 쉽죠. 하지만, 소프트웨어의 특성 상 비즈니스는 변경되기 쉽고, 코드 또한 변경되기 쉽습니다. 소프트웨어의 아키텍처를 아래의 순서에 따라 살펴 보도록 하겠습니다. - Layered Architecture - Clean Architecture - Hexagonal Architecture Layered Architecture은 Clean Architecture가 나오기까..
-
MySQL FullText Search, 제대로 이해하기
MySQL의 fulltext search 에 대한 이해와 MATCH AGAINST 사용법을 간단히 알아보는 것이 해당 포스팅의 목표입니다. 후속 포스팅으로 FULLTEXT 검색 파서 중 하나인 "ngram" 사용법에 대해 다룰 때 구문 사용법을 조금 더 자세히 알아볼 예정이며, 해당 포스팅에서는 FullText 기본적인 내용과 활용법에 대해 알아보고자 합니다. Full-Text Searches MySQL을 사용할 때, LIKE 연산을 통한 패턴 일치 검색을 사용하고는 합니다. LIKE 연산을 통해 검색을 하게 되면 인덱스를 통한 검색을 못할 때가 생기곤 하는데요. 이럴 때 고려해볼 수 있는 것이 바로 오늘 다룰 전문 검색, Full-Text 검색입니다. FullText 검색은 단어 또는 구문에 대한 검색..
-
Postman, 어렵지 않게 사용하기 - 사용
안녕하세요 😆 이 번 포스팅의 주제는 API를 테스트하기 위해 필요한 POSTMAN을 '제대로' 사용하는 법에 대해 다룰 예정입니다. 서버뿐만 아니라, 클라이언트를 개발하는 분들도 도움이 되는 내용들을 다룰테니 도움이 되셨으면 좋겠어요. 지난 포스팅에서는 postman에 대한 구조를 알아보았어요. UI를 알아야 사용할 때 헤매지 않겠죠? 사용하면서 금방 익숙해지겠지만, 처음 보는 분들은 참고하시고 보면 좋을 것 같아요. 이 전 포스팅에 이은 시리즈입니다. 이 전글을 확인해주세요. Postman, 어렵지 않게 사용하기 - 소개 ***************** INDEX ***************** 1장 - 소개 ✨ POSTMAN❓ 🚀Installation 🌈 Structure 2장 - 사용 🧞♀️ T..
Recent
-
Kubernetes, 제대로 이해하기
Kubernetes Deep Dive 중, 시리즈 연재 중입니다. 모든 게시글은 이곳에서 확인할 수 있습니다. 📌 Kubernetes Series K8s Architecture, 제대로 이해하기 Kubernetes Architecture, 제대로 이해하기 - Control Plane Kubernetes Architecture, 제대로 이해하기 - Worker Node Kubernetes Deployment, 제대로 이해하기 Kubernetes Taints & Tolerations, 제대로 이해하기 Kubernetes Affinity, 제대로 이해하기 Kubernetes Scheduler, 제대로 이해하기 Kubernetes Resource & Limit, 제대로 이해하기 Kubernetes DaemonS..
2024.04.16 23:38 -
Kubernetes ConfigMap & Secret, 제대로 이해하기
본 포스팅에서는 Kubernetes의 환경변수를 구성하는 방법인 ConfigMap & Secret 의 개념을 이해하고 적용할 수 있도록 하는 목표를 가집니다. 🔗 Kubernetes Series 모든 Kubernetes 시리즈를 확인하시려면 위를 참고해 주세요. 쿠버네티스를 사용하면서, 환경에 따라 다르거나 자주 변경되는 설정 옵션들을, 실행되는 애플리케이션 코드와 분리시키고 싶을 때가 생깁니다. 환경 변수를 정의하면서 이를 해결할 수 있는데요. 본 포스팅에서는 쿠버네티스에서 환경변수를 설정할 수 있는 총 세가지의 방법을 소개해드리고자 합니다. Environment Variables 🔗 Official: Configuration Container Runtime 중 대표적인 Docker에서 환경변수를 입력..
2024.04.16 23:29 -
Kubernetes RollingUpdate & Rollbacks, 제대로 이해하기
본 포스팅에서는 Kubernetes의 RollingUpdate의 개념을 이해하는 목표를 가집니다. 🔗 Kubernetes Series 모든 Kubernetes 시리즈를 확인하시려면 위를 참고해 주세요. 지난 포스팅에서 Deployment에 대해 알아보았습니다. 다시 짚어보자면, Deployment는 이름 그대로, 쿠버네티스에서 배포를 위한 객체입니다. 기능적으로는, Pod와 ReplicaSet를 배포를 관리합니다. 이번 포스팅에서는 배포 이후의 업데이트 과정을 다뤄보겠습니다. 앱 버전 1을 배포한 상태에서 버전 2로 업데이트할 때를 생각해보겠습니다. 5개의 Pod가 떠 있는 상태에서 해당 Pod 를 어떻게 교체해야 할까요?또, 교체되는 과정이 어떻게 될지 살펴보도록 하겠습니다. Rollout Deploy..
2024.04.07 23:59 -
Kubernetes DaemonSet, 제대로 이해하기
본 포스팅에서는 Kubernetes의 DaemonSet의 개념을 이해하는 목표를 가집니다. 🔗 Kubernetes Series 모든 Kubernetes 시리즈를 확인하시려면 위를 참고해 주세요. DaemonSets DaemonSet은 일부 혹은 모든 노드에 동일한 Pod (copy of a Pod) 가 하나씩 실행되도록 보장합니다. 클러스터에 새 노드가 추가될 때마다 Pod 복제본이 자동으로 해당 노드에 추가되고, 노드가 제거되면 Pod는 Garbage Collection의 대상이 되어 자동으로 제거됩니다. 대부분의 일반적인 경우엔, ReplicaSet과 Deployment을 통해 여러 Worker Node에서 애플리케이션을 복제하면서, Cluster 내 다양한 노드에 다양한 포드를 배포할 수 있었습니다..
2024.04.01 13:19 -
Kubernetes Resources, 제대로 이해하기
본 포스팅에서는 Kubernetes의 Resources 를 제한하고 보장받을 양을 지정하는 방법을 익힙니다. 🔗 Kubernetes Series 모든 Kubernetes 시리즈를 확인하시려면 위를 참고해 주세요. Resource Management for Pods and Containers 모든 Pod를 운영하려면 자원이 필요하며, 모든 노드엔 사용 가능한 CPU와 메모리 리소스를 가지고 있습니다. 쿠버네티스 스케줄러는 Pod에 요구되는 리소스 양을 고려하여, 노드에서 사용 가능한 리소스에 따라 Pod가 배치될 최적의 노드를 결정합니다. 이때, 노드에 배치할 Pod를 지정 시, 컨테이너에 필요한 각 리소스의 양을 선택적으로 지정할 수 있는데요. 대표적인 리소스에는, CPU와 메모리(RAM) 등이 있습니다..
2024.04.01 12:34 -
Kubernetes Scheduler, 제대로 이해하기
본 포스팅에서는 Kubernetes의 Scheduler의 개념을 이해하는 목표를 가집니다. 🔗 Kubernetes Series 모든 Kubernetes 시리즈를 확인하시려면 위를 참고해 주세요. Pod가 특정 노드에 배치되는 이유를 알고 싶거나, 사용자 정의 스케줄러를 직접 구현할 계획이라면, 해당 포스팅에서 이해해보도록 하겠습니다. Scheduling Kubernetes에서 스케줄링은 Kublet이 Pods를 실행할 수 있도록 Nods와 매칭시키는 것을 의미합니다. Scheduler 스케줄러는 새로 생성된 Pod 중, 아직 노드에 할당되지 않은 Pod들을 찾아내고, 해당 Pod가 실행될 최적의 Node를 찾는 역할을 합니다. kube-scheduler 🔗 kubernetes.io - Schedulin..
2024.03.31 23:59 -
Kubernetes Affinity, 제대로 이해하기
본 포스팅에서는 Kubernetes의 Affinity의 개념을 이해하여 Taints & Tolerations와의 차이점을 구분할 수 있는 목표를 가집니다. 🔗 Kubernetes Series 모든 Kubernetes 시리즈를 확인하시려면 위를 참고해 주세요. Assigning Pods to Nodes 노드를 특정 애플리케이션 만을 실행하게 만들거나, 다른 서비스와 구분되는 그룹으로 만들고 싶을 때가 있습니다. Pod을 특정 Node에 배치되도록 하는 방식에는 Label & Selector, NodeSelector, Affinity 등이 있습니다. Node Affinity vs Taints & Tolerations 두 기능의 차이가 궁금하신 분들은 이전 포스팅의 Node Affinity vs. Taints..
2024.03.25 12:22 -
Kubernetes Taints & Tolerations, 제대로 이해하기
본 포스팅에서는 Kubernetes의 Taint 와 Toleration의 개념을 이해하여 Affinity와의 차이점을 구분할 수 있는 목표를 가집니다. 🔗 Kubernetes Series 모든 Kubernetes 시리즈를 확인하시려면 위를 참고해 주세요. Taints & Tolerations? Taints and tolerations work together to ensure that pods are not scheduled onto inappropriate nodes. Taint (테인트)와 Toleration(톨러레이션)는 Pod가 적절치 않은 노드에 스케줄링 되지 않는 것을 보장합니다. 특정 Pod가 Node에 스케줄링 될 때, Node 배치에 제한을 걸 수 있는 용도로 사용될 수 있습니다. 참고로..
2024.03.24 23:58