전체 글135 [Kubernetes] NetworkPolicy 이해: podSelector와 ingress.from.podSelector의 차이 1. 헷갈렸던 부분NetworkPolicy의 매니페스트를 보면 다음과 같이 두 개의 podSelector가 등장한다.처음에는 이 두 개의 podSelector가 같은 역할을 한다고 생각했다.그래서 “app=redis” 라벨을 가진 파드 중에서 "access=redis" 라벨도 가진 파드만 허용하는 게 아닐까?” 라고 오해했다.2.정확한 동작 원리(1) podSelector.matchLabels → 보호할 대상podSelector: matchLabels: app: redis이 NetworkPolicy가 적용될 파드를 선택하는 부분즉, 이 정책이 적용되는 파드는 app=redis 라벨을 가진 파드뿐이 정책이 적용된 파드는 기본적으로 모든 Ingress 트래픽이 차단됨 (화이트리스트 방식)(2) ing.. 2025. 3. 3. [Kubernetes] LivenessProbe 개요 및 테스트 시 유의점 LivenessProbe란?LivenessProbe는 명칭 그대로 컨테이너의 생명(liveness)를 진단(probe)하는 것으로,k8s의 주요 특성 중 하나인 Self-healing을 구현해주는 기능입니다.kubernetes.io에서 제시하는 self-healing의 정의는 아래와 같은데요.즉, 실행 중이던 컨테이너에 문제가 생겼을 때 이를 시스템적으로 복구해주는 것을 말합니다.LivenessProbe는 컨테이너 구동 후 최초 '한번은' 성공해야 한다시나리오아래 yaml의 가장 하단을 보면, 컨테이너를 실행 후 /tmp/healthy라는 파일을 생성하고 30초 후에 sleep 후 해당 파일을 삭제합니다./tmp/healthy 파일이 존재할 경우를 정상으로 보고, 모종의 이유로 해당 파일이 삭제되는 상황.. 2025. 1. 9. [Spring Security] 스프링 시큐리티의 구조와 인증 과정 스프링 시큐리티는 크게 네 가지 요소로 구성되어 있습니다. 인증 필터, 인증 관리자, 인증 공급자, 보안 컨텍스트가 그것들인데요. 스프링 시큐리티의 인증 프로세스를 각 구성요소의 역할과 함께 정리해보겠습니다.인증 과정HTTP 요청이 들어오면 AuthenticationFilter가 가로챈다.AuthenticationFilter는 AuthenticationManager에게 인증을 위임한다.AuthenticationManager는 AuthenticationProvider를 이용하여 인증을 처리한다.AuthenticationProvider는 사용자 관리 책임을 구현하는 UserDetailsService와 암호 관리를 구현하는 PasswordEncoder를 인증 논리에 이용한다.인증된 엔티티에 대한 세부 정보를 .. 2024. 11. 18. [Network] 주소의 쓰임: IP 주소와 MAC 주소 주저리...영화나 드라마에서 IP 추적을 통해 범인을 잡는 모습을 보고 저런 건 어떻게 가능한 걸까 생각한 적이 있습니다. IP 주소의 접속정보를 추적해서 특정 PC를 잡아내는 그런 그림이었던 것으로 기억합니다. 이런 소소한 궁금증으로 시작해 PC가 가지고 있는 주소들에 대해 정리해 보고자 합니다.주소의 쓰임'주소'란 본디 식별을 위한 고유한 값이라고 볼 수 있는데요.IP 주소와 MAC 주소라는 것이 별개로 존재하는 것을 보면, 각각의 쓰임이 다름을 미루어 짐작할 수 있었습니다.먼저 각 주소의 개요를 살펴보고 그들이 서로 어떻게 쓰임이 다른지 알아보겠습니다.개요 IP 주소MAC 주소정의IP (Internet Protocol) 주소는,인터넷과 같은 네트워크에서 장치를 식별하는 주소MAC(Media Acce.. 2024. 11. 5. [MySQL] 정규표현식 연산자 REGEXP로 이메일 양식 검증 해보기 정규표현식 함수 REGEXP를 활용하여 구하고자 하는 조건에 맞는 데이터를 추출하는 방법에 대하여 알아보고자 한다.정규 표현식(Regular Expression)정규 표현식이란, 문자열을 다룰 때 문자열의 일정한 패턴을 표현하는 일종의 형식 언어이다.따라서 요점은 '패턴을 어떻게 표현하는가' 이다.각 패턴이 무슨 의미인지는 표로 잘 정리된 페이지들이 많을 뿐더러 표만 봐서는 잘 와닿지 않기 때문에예제를 통해 접근해보려 한다.예제) 이메일 양식패턴화하고자 하는 이메일 양식의 조건은 다음과 같다.이메일은 '이름@도메인.com' 과 같은 양식을 따른다.이름 부분은 알파벳 대소문자 및 언더바(_)로만 이루어지며, 길이는 2~10글자이다.도메인 부분은 알파벳 대소문자로만 이루어지며, 길이는 2~10글자이다.위 조.. 2024. 10. 23. [MySQL] CHAR vs VARCHAR / 기존에 알던 선택 기준이 흔들리다 기존의 선택기준 - '저장할 데이터가 가변적이면 VARCHAR, 아니면 CHAR'두 타입은 모두 공통적으로 문자열을 저장하는 용도로 사용되며, 최대 저장 가능 길이를 명시한다는 공통점이 있으나, 뚜렷한 차이를 비교하자면 아래와 같습니다.CHARVARCHAR값의 실제 크기와 관계없이 지정된 크기만큼의 저장공간 할당값의 실제 크기만큼의 저장공간 할당 따라서, DB를 설계할 때 저장할 데이터의 크기가 고정되어 있다면 CHAR을 선택하고, 가변적이라면 VARCHAR를 선택해왔습니다.하지만 이는 상황에 따라 맞기도 하고 틀리기도 합니다. VARCHAR 대신 CHAR를 사용했을 때의 문제점CHAR는 실제 저장되는 값의 크기가 얼마든, 지정된 크기만큼의 저장공간을 할당하기 때문에 저장되는 데이터의 크기의 편차가 클 .. 2024. 6. 18. [Softeer] 나무 섭지 / Java 문제 출처https://softeer.ai/practice/7726 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai문제 풀이남우가 유령을 피해 목적지에 도달할 수 있는지의 여부를 판단하는 문제입니다. 남우와 유령이라는 두 종류의 움직이는 말이 있는 상황이므로각각을 위한 Queue를 마련하여 BFS를 수행하며 이동가능한 칸에 대해 걸리는 시간 정보를 탐색해나갑니다. 여기서 주의할 점은 남우가 유령에 잡히지 않아야 된다는 것입니다.따라서 canGoNamwoo() 메서드로 남우의 이동가능성을 파악할 때, 해당 칸에 대해 유령이 도달하는 시점과 남우가 도달하는 시점을 비교하는 것이 포인트입니다. 추가 설명은 코드의 흐름에 따라 주석으로 작성하였습니다.Java Codeimport java.i.. 2024. 6. 15. [Softeer] 함께하는 효도 / Java 문제 출처https://softeer.ai/practice/7727 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai문제 풀이완전탐색으로 문제를 풀이해보았습니다.주어진 조건에 따르면 친구의 수가 최대 3 명이고 최대로 이동할 수 있는 횟수가 3 번뿐이기에 모든 경우의 수를 탐색해볼만 하다고 생각했습니다. 따라서 아래와 같은 순서에 따라 코드를 구성하였습니다.1. 순열(Permutation)로 각 친구가 움직일 수 있는 모든 경로(Route)를 구한다.2. 조합(Combination)으로 각 친구가 어떤 경로를 선택했는지에 대한 모든 경우의 수를 탐색하며 최대 수확량을 구한다. 추가적인 설명은 코드 내의 주석으로 작성하였습니다.Java Codeimport java.io.*;import .. 2024. 6. 11. [Java] Record로 DTO 만들기 팀프로젝트의 시작단계에서 DTO에 관한 컨벤션을 정하는데 팀원이 "DTO는 Record로 만드는 게 어때?"라며 운을 띄우더라구요. 그때만해도 Record가 무엇인지 몰랐으나 Record의 장점에 대해 나열하는 근거들이 매력적으로 느껴져 Record에 대해 알아보게 되었습니다. 3.x.x 대의 SpringBoot가 필수적으로 Java17 이상을 요구함에 따라 Java11을 뒤로하고 Java17을 선택하여 사용하게 되었죠. Record는 Java14부터 처음 포함되어 새롭게 추가된 내용인데, 무엇에 쓰는 물건인고하니 기존의 코드를 간결하게 만들어줄만한 부분이 있는 유용한 점이 있다고 여겨지더라구요. 함께 Record에 대해 정리해봅시다.Record란?먼저 Java 공식문서에서의 서술은 다음과 같습니다... 2024. 5. 30. [Error / Spring] @PathVariable 변수명 인식 실패 이슈 문제 상황아래와 같이 PathVariable을 포함하고 있는 path에 API 요청을 보내니 에러가 발생하였다.Request processing failed: java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.] with root cause 에러 메세지를 보니 parameter를 인식하지 못한다는 내용이었다.Ensure that the compiler uses the '-paramet.. 2024. 5. 7. 객체지향프로그래밍(OOP)의 네 가지 특성 객체지향프로그래밍(Object-Oriented Programming)이란컴퓨터 프로그램을 여러 객체들의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그래밍 패러다임이다. 객체지향프로그래밍의 네 가지 특성1. 추상화객체의 공통적인 속성과 메서드를 추출하여 정의하는 것2. 상속부모 클래스에서 정의된 속성과 메서드를 자식 메서드에서 재활용하는 것3. 다형성어떤 객체의 속성이나 메서드가 상황에 따라 여러 형태를 가질 수 있는 것이러한 다형성을 구현하는 방법이 바로 Overloading과 Overriding Overloading vs Overriding1. Overloading 하나의 클래스에서 같은 이름의 메서드를 여러 개 정의하는 것오버로딩의 조건파라미터 개수 혹은 각 파라미터의 타입이 달라야 한다.2.. 2024. 4. 25. [CodeTree] 겹쳐지지 않는 두 직사각형 / Java https://www.codetree.ai/missions/2/problems/non-overlapping-two-rectangles/description 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 문제 접근 완전탐색 유형의 문제입니다. 서로 겹치지 않는 두 직사각형의 총합을 최대로 만드는 것이 목표인데요. 이리저리 짱구를 굴려봐도 알고리즘을 통해 효율적으로 최댓값을 구해낼 각이 보이지 않는군요. 완전탐색 할 마음을 먹었다면 그 다음은 '어떻게' 할 것이냐입니다. 저는 직사각형의 네 꼭짓점 중 두 꼭짓점을 통해 직사각형을 표현하는 방식을 선택했습.. 2024. 4. 10. 이전 1 2 3 4 ··· 12 다음