Kubernetes 이슈 및 해결 방법 모음

Ingress에서 URL Path를 통한 라우팅 문제 상황 아래 상황은 실제로 발생한 이슈가 아닌, 이해를 돕기 위해 만든 가상의 상황입니다. parker-movie 앱에서 영화의 정보를 조회할 수 있는 GET /movies/{movieId} API가 존재한다. 그런데, movieId 100번은 너무 유명한 영화라 조회 빈도가 높았고 부하가 심해졌다. 이를 해결하는 다양한 방식이 있겠지만, 여기서는 쿠버네티스 환경에서 pod 중 movieId 100번을 위한 pod을 따로 사용하고 싶었다. 이를 위해서 Ingress에서 URL Path를 통한 라우팅을 사용할 수 있다. 적용 apiVersion: apps/v1 kind: Deployment metadata: name: parker-movie-normal-app labels: app: parker-movie-normal-app spec: selector: matchLabels: app: parker-movie-normal-app replicas: 2 template: metadata: labels: app: parker-movie-normal-app spec: containers: - name: parker-movie image: parker-movie:latest imagePullPolicy: Always ports: - containerPort: 8081 env: - name: SPRING_PROFILES_ACTIVE value: real --- apiVersion: apps/v1 kind: Deployment metadata: name: parker-movie-100-app labels: app: parker-movie-100-app spec: selector: matchLabels: app: parker-movie-100-app replicas: 2 template: metadata: labels: app: parker-movie-100-app spec: containers: - name: parker-movie image: parker-movie:latest imagePullPolicy: Always ports: - containerPort: 8081 env: - name: SPRING_PROFILES_ACTIVE value: real --- apiVersion: v1 kind: Service metadata: labels: app: parker-movie-normal-svc name: parker-movie-normal-svc spec: ports: - port: 80 protocol: TCP targetPort: 8081 selector: app: parker-movie-normal-app type: ClusterIP --- apiVersion: v1 kind: Service metadata: labels: app: parker-movie-100-svc name: parker-movie-100-svc spec: ports: - port: 80 protocol: TCP targetPort: 8081 selector: app: parker-movie-100-app type: ClusterIP --- apiVersion: networking....

October 15, 2023 · parker1609

Postgresql 이슈 및 해결 방법 모음

버전에 따른 파티션 테이블 인덱싱, 버전 10 VS 버전 11 Postgresql은 파티션 테이블을 생성하는 과정에서 헤더(부모) 테이블을 정의하는데 여기에 인덱스 정보를 선언할 수 있다. Postgresql 버전 10까지는 헤더 테이블로 생성한 하위 파티션 테이블에는 부모 테이블에 적용한 인덱스가 생성되지 않았다. 하지만 버전 11부터는 부모 테이블에 적용된 인덱스가 생성된 하위 테이블에도 똑같이 적용이 됩니다. 여러 환경에서 같은 파티션 테이블을 사용하면서 같은 쿼리를 동작시켰는데 속도가 전혀 다르다면, 일단 실행계획을 살펴보자. 그 결과 어떤 환경은 인덱스가 적용되고, 다른 환경은 인덱스가 적용되지 않는다면 Postgresql 버전을 의심해보자....

October 15, 2023 · parker1609

LLM AI 후기와 내 생각

2023년은 개발을 넘어 세계적으로 가장 핫한 키워드는 ‘ChatGPT’일 것이다. 이는 간단히 말하면 챗봇과 같은 AI인데, 대화형 AI, 챗봇 AI, 대규모 언어 모델(LLM) AI 등으로 불리우고 있다. 이를 직접 사용해본 경험과 그 미래에 대해서 내 개인적인 의견을 적어보려한다. History 2023-03: ChatGPT 3.5 버전(무료 버전) 사용 2023-03-26: ChatGPT Plus 유료 버전 사용 2023-05-10: Google Bard 한국어 버전 지원 (이 때쯤 잠깐 사용해봄.) 2023-05-26: ChatGPT Plus 유료 버전 사용 종료 2023-08: Github Copilot 사용 시작 ChatGPT ChatGPT에 대한 설명은 이를 직접 chatGPT에 물어본 내용을 약간 정리만 해보았다....

September 2, 2023 · parker1609

개발자 학습

토비님 인프런의 한 질문에 대한 답변 (질문 링크) 토비님 답변 발췌 어려운 질문을 해주셨네요. 기술 공부에 비법은 없습니다. 각자 자신이 해야하는 일에 절박감을 가지고, 이 기술을 어떻게 써야 내가 원하는 결과를 가져올 수 있는지 열심히 찾는 수 밖에요. 당장 해야하는 일을 해결할 때는 모든 방법을 다 동원해서 코드를 만들어야죠. 다만, 이런 방식을 지속하면 생산성은 안 오르고, 응용력도 떨어지고 결정적으로 재미가 없습니다. 그래서 공부를 하는데요. 이건 사람마다 선호하는 스타일이 다른 것 같습니다....

September 2, 2023 · parker1609

MyBatis 필드 및 파라미터 매핑 (with. Spring Boot)

이 글은 Spring Boot 환경에서 MyBatis를 사용할 때, 기본적인 조회 결과의 매핑에 대해 정리한 글이다. 이 글에 나오는 예제는 이 링크에서 확인할 수 있다. Spring Boot 3.1.3 Java 17 mybatis-spring-boot-starter 3.0.2 mybatis 3.5.13 H2 Database 0. 예제 소개 매핑 테스트를 위한 간단한 영화(Movie) 예제를 살펴보자. 영화에 대한 정보를 저장하고 조회하는 서비스이다. 이 서비스의 ERD는 간단히 다음과 같이 만들어보았다. Movie에 대한 DB 스키마는 다음과 같이 표현할 수 있다. (H2 Database 기준)...

August 27, 2023 · parker1609

2023년 전세집 이사

서울로 독립을 하면서 3년간 낙성대역 근처 3평 남짓한 원룸에서 지냈다. 원래는 2년을 지내고 이사를 가려고 했었다. 그런데 몇 가지 문제로 1년 더 연장을 해서 총 3년을 지내게 되었다. Part 1. 2022년 이사 실패 2022년 여름 낙성대역 원룸 2년 계약이 끝나가고 있었다. 나는 다음 이사할 곳으로 전세 원룸 오피스텔을 알아보고 있었고, 이 당시 회사는 풀재택을 하고 있어서 위치는 크게 중요하지 않았다. 그래서 여러 후보 지역이 있었다. 미사역, 거여역, 모란역, 상현역, … 등 신도시거나 원룸 오피스텔이 모여있는 깨끗한 동네 그리고 산책할 곳이 있는 곳 위주로 찾아보았다....

August 20, 2023 · parker1609

Spring Boot에서 카프카 사용하기

이 글의 코드는 해당 링크에서 확인할 수 있습니다. 목표 Spring Boot 에서 Apache Kafka 사용 방법 자주 사용하는 설정 정리 테스트 개발 환경 Spring Boot 3.1.0 Java 17 Spring Kafka 3.0.7 kafka-client 3.4.0 Gradle Docker Broker 테스트 개발 환경에서는 카프카를 로컬에서 Docker 파일로 띄우고, Spring 서버에서 이를 연결한다. 로컬에서 Docker로 Apache Kafka 실행하기 kafka docker image 비교 bitnami confluentinc wurstmeister 링크 다운로드 수 star 수 특징 confluentinc Kafka / Zookeeper 100M+ 394 confluent 에서 제공하는 기능이 포함 bitnami Kafka / Zookeeper 100M+ 669 순수 카프카 이미지 wurstmeister Kafka / Zookeeper 100M+ 1....

May 29, 2023 · parker1609

[Kafka] 101 - 카프카에 대한 소개와 주요 설정

카프카(Apache Kafka)란? Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications. 카프카는 대용량의 실시간 데이터 스트리밍 플랫폼으로서, 분산형 메시지 큐 시스템으로 동작한다. 카프카는 다음과 같은 특징을 가지고 있다. 높은 처리량과 낮은 지연시간 페이지 캐시 배치 전송 처리 (프로듀서 및 컨슈머는 단 건이 아닌 여러 개로 처리 가능) 압축 전송 (네트워크 통신 효율) 배치와 같이 사용하면 효과가 더욱 커진다....

May 7, 2023 · parker1609

자바 웹 기술 역사

1. CGI (Common Gateway Interface) World Wide Web(WWW)은 초기에는 데이터가 동적으로 변하는 것에 대한 생각은 하지 않아 정적인 페이지 위주로 개발이 되었다. 시간이 흘러 웹은 점점 더 많은 데이터를 보여주도록 변하였고, 사용자가 필요에 따라 바로바로 데이터를 보여주는 동적인 페이지에 대한 수요가 늘었다. 동적인 페이지의 예제는 요즘은 흔히 찾아볼 수 있다. 웹 화면 사이드에 여러 광고가 보인다거나, 게시글이 보여지고 내가 보고 싶은 게시글을 검색한다거나, 댓글을 다는 등의 행동은 모두 동적인 페이지에서 이루어진다....

February 26, 2023 · parker1609

Java 11 vs Java 17

1. 지원기간 https://www.oracle.com/java/technologies/java-se-support-roadmap.html 자바 11버전은 최대 2026년 9월까지 지원 자바 17버전은 최대 2029년 9월까지 지원 2. Java 11 VS 17, 주요 변경사항 아래 예제 코드의 전체는 https://github.com/programming-starter/java-17-starter 이 링크에서 확인할 수 있습니다. Text Blocks 문자열을 좀 더 읽기 좋게 표현할 수 있게 되었다. 특히 JSON과 같은 문자열을 표현할 때, 예전에는 다음과 같이 표현해야 했다. { "name": "parker", "age": 30, "job": "Programmer" } @Test void old_style() { var json = "{\n" + " \"name\": \"parker\",\n" + " \"age\": 30,\n" + " \"job\": \"Programmer\"\n" + "}"; System....

February 24, 2023 · parker1609