본문 바로가기

분류 전체보기130

[쿠버네티스] 새로운 회사, 새로운 인프라: 신규 입사자의 쿠버네티스(K8s) 적응기 최근 새로운 회사로 이직을 하면서, 내 개발 환경에 가장 크고 낯선 변화가 찾아왔다. 바로 모든 서비스가 쿠버네티스(Kubernetes, K8s) 위에서 배포되고 운영되고 있다는 점이다.이전까지는 도커(Docker)나 비교적 단순한 배포 환경에 익숙했다면, 새 직장에서는 수많은 마이크로서비스들이 거대한 클러스터 위에서 얽혀 돌아가고 있었다. 단순히 코드를 짜는 것을 넘어, 내 코드가 어떻게 서버에 올라가고 외부의 트래픽을 어떻게 맞이하는지 그 '인프라의 흐름'을 이해하지 못하면 이곳에서 제대로 된 개발과 디버깅을 하기 어렵겠다는 강렬한 위기감이자 필요성을 느꼈다.로그 하나를 보려고 해도 파드(Pod)와 네임스페이스(Namespace)를 알아야 했고, 서비스 URL을 찾으려면 인그레스(Ingress) 설정.. 2026. 7. 19.
Elasticsearch 활용한 검색 구현하기 - 2 (Springboot 연동) 상황 앞선 포스팅에서는 엘라스틱 서치를 설치하는 작업을 해보았다.2025.11.13 - [Back/Kotlin] - Elasticsearch 활용한 검색 구현하기 - 1 (Docker로 Elasticsearch + Kibana 구축) 이제는 Springboot + Kotlin을 활용하여 구현을 진행할 차례이다. [개발환경] Kotlin: 1.9.25Java: 17Spring Boot: 3.5.7 적용 ✔️1. 세팅 및 설정파일 작성1. build.gradle.kts에 의존성 추가 implementation("org.springframework.boot:spring-boot-starter-data-elasticsearch")Spring Data Elasticsearch는 Spring과 Elastics.. 2025. 11. 14.
Elasticsearch 활용한 검색 구현하기 - 1 (Docker로 Elasticsearch + Kibana 구축) 상황현재 프로젝트에서 이미 구축되어있는 엘라스틱 서치를 활용하여 검색 서비스를 제공하고 있다.내 업무는 구현된 엘라스틱서치에 데이터를 넣고, 제거하고, 불러오는 작업까지가 범위였다. 그러던 중에, 엘라스틱 서치가 무엇인지, 구현은 어떻게 하는지 궁금증이 생겼고직접 간단한 서비스를 구현해보고 싶어졌다.적용구현하기 앞서, 엘라스틱 서치에 대해 알아보자.✔️1. 엘라스틱 서치 (Elasticsearch) 란? 대용량 데이터를 실시간으로 검색하고 분석할 수 있는 검색 및 분석 엔진. RESTful API를 제공해주고, JSON 형식의 데이터를 저장하고 검색한다. 📌RDB로 검색시 느린 이유?만약 RDB를 사용해서 LIKE %검색어% 로 데이터를 검색한다면, 테이블의 데이터가 많을수록 결과 반환하기까지 오래걸린.. 2025. 11. 13.
[Git] Git 태그(Tag)와 태그 기반 브랜치 생성하기 상황팀 내에서 브랜치 관리 규칙이 조금 변경되면서 배포된 마지막 브랜치에서 새 브랜치 따기 -> 마지막 태그 기준으로 따기 로 변경되었다. 적용 ✔️Tag란?Git에서 **태그(Tag)**는 특정 커밋을 가리키는 이름표이다.주로 버전 릴리스(v1.0.0, production-1.1.2129 등)에 사용되며, 해당 시점의 코드를 쉽게 참조할 수 있다. 📌 현재 저장소의 태그 목록git tag 📌 태그가 많을 경우, 최신 순으로 정렬해서 보고 싶다면 --sort=-creatordate 옵션을 사용git tag --sort=-creatordate 📌 Tag 기반으로 브랜치 따기 ex. 예를 들어 production-1.1.2129 태그에서 fix/baggage-test라는 브랜치를 따고 싶다면git ch.. 2025. 8. 19.
[Kotlin] 생성자 개념 정리 1. 생성자 종류- 코틀린에서의 생성자는 크게 두 종류로 나뉜다.1) 주 생성자 (Primary Constructor) 클래스 헤더에 선언되는 기본 생성자이다.매개변수에 var 또는 val을 사용하면 자동으로 클래스 프로퍼티가 생성된다.init 블록과 함께 초기화 로직을 작성할 수 있다.class Member(var name: String, var age: Int = 10) { init { println("Initialized with name=$name, age=$age") }}  2) 부 생성자 (Secondary Constructor) constructor 키워드를 사용하여 정의한다.주 생성자를 반드시 호출해야 한다.class Member(var name: String, va.. 2025. 1. 22.
[Kafka] 기본 개념 및 Embedded Kafka를 통한 Kafka 테스트 상황 아파치 카프카는 대용량 실시간 메시징 시스템으로, 대량의 데이터를 안정적이고 빠르게 전송하고 처리하는 데 사용된다. 기존 프로젝트에서 메소드 내에 특정 로직에서 오류가 발생하면 전체 프로세스가 롤백되는 문제가 있었다.그래서 그 특정 로직(로깅, pdf생성, 메시지 전송)만 따로 분리하여 카프카를 이용하여 처리하고자 한다. ※참고로 이 포스팅은 카프카 서버가 구축되어있고, 기본적인 카프카 세팅이 완료되었다고 가정하고 작성한 것입니다. [개발 환경]- JDK 17- Springboot 3.1.3- Kotlin 1.8.22- JUnit5- IDE : IntelliJ- OS: mac m1간단 요약개발에 들어가기 앞서, 그전에 간단하게 이론적인 부분을 정리해보자.데이터를 주고받는 굉장히 많은 어플리케이션과.. 2024. 11. 27.