전체 글
-
Spring: 빈(Bean)이란?Back-End/Spring 2025. 4. 11. 21:35
🫘 스프링의 빈이란? – 객체를 관리하는 스프링의 핵심 메커니즘“Spring에서 Bean이란, 단순한 객체가 아닙니다.생성부터 소멸까지, 프레임워크가 관리하는 살아있는 객체입니다.” 1. 들어가며 – 객체는 누가 관리하나요?Java 애플리케이션에서 객체를 생성하는 가장 기본적인 방법은 new 키워드를 사용하는 것입니다.MyService myService = new MyService();하지만 이 객체가 여러 클래스에서 공통으로 필요하다면, 매번 new로 만들면 비효율적이고, 객체 간 의존성이 복잡해지며, 테스트도 어려워집니다.이런 문제를 해결하기 위해 Spring은 IOC(제어의 역전, Inversion of Control) 이라는 개념을 도입합니다.객체를 직접 만들고 연결하지 않고, Spring이 ..
-
Elasticsearch: BULK란?Search & AI/Elasticsearch 2025. 3. 27. 09:56
🚀 Elasticsearch의 Bulk API란?📌 정의Bulk API는 여러 개의 요청(문서 생성, 수정, 삭제 등)을 한 번의 HTTP 요청으로 묶어서 처리할 수 있는 기능입니다.✅ "많은 문서를 빠르게 처리"하고 싶을 때 사용하는 대표 기능! 🤔 왜 Bulk이 필요할까?일반적인 방식:POST /index/_doc/1POST /index/_doc/2POST /index/_doc/3 ...→ 각 요청마다 네트워크 통신과 인덱싱 오버헤드가 발생Bulk 방식:POST /_bulk { "index": { "_index": "my_index", "_id": "1" } }{ "title": "algo", "professor": "kim" }{ "index": { "_index": "my_index", "_..
-
Elasticsearch란?Search & AI/Elasticsearch 2025. 3. 25. 22:40
1. Elasticsearch란 무엇인가?Elasticsearch는 오픈소스 분산 검색 엔진으로, Apache Lucene을 기반으로 만들어졌습니다. 단순한 텍스트 검색을 넘어서, 대규모의 정형/비정형 데이터에 대한 검색 및 분석을 실시간으로 처리할 수 있습니다. 로그 분석, 모니터링, 데이터 탐색, 검색 서비스 등 다양한 분야에서 핵심 인프라로 사용됩니다.✅ 핵심 키워드: Full-text search, 분산(Distributed), 실시간(Real-time), RESTful API 2. 철학: 검색을 중심으로 한 데이터 저장Elasticsearch의 가장 큰 철학은 "검색이 핵심이다"라는 것입니다. 일반적인 RDBMS는 데이터를 정규화된 형태로 저장하고 나중에 조회하지만, Elasticsearch는 ..
-
ELK Stack이란?Search & AI/ELK 2025. 3. 23. 14:04
로그 분석부터 검색 서비스까지 가능한 데이터 통합 플랫폼서비스를 운영하다 보면 로그는 쌓이고, 사용자들은 검색을 합니다.이 두 가지를 한 번에 해결해줄 수 있는 강력한 도구가 있습니다. 바로 ELK Stack입니다.이 글에서는 ELK Stack이 무엇인지, 왜 많은 개발자와 기업들이 사용하는지, 그리고 단순한 로그 분석을 넘어서 검색 서비스까지도 어떻게 구현 가능한지 쉽게 설명해드릴게요. 1. ELK Stack이란?ELK는 세 가지 오픈소스 도구의 조합입니다:이 세 가지를 함께 사용하면 로그를 수집 → 저장 → 검색 → 시각화하는 강력한 파이프라인이 완성됩니다.💡 최근에는 로그 수집을 더 가볍고 빠르게 하기 위해 Beats도 자주 함께 사용하며, 이들을 묶어 Elastic Stack이라고 부르기도 합니..
-
java: Full GC란?Back-End/Java 2024. 12. 22. 15:15
Full GC(Full Garbage Collection)는 Java Virtual Machine(JVM)에서 Heap 메모리 전체를 검사하여 가비지 객체를 회수하는 작업을 의미합니다. 이것은 Java 런타임(JVM)에 의해 관리되는 메모리 정리 작업으로, Spring 프레임워크 자체의 기능은 아니며, Spring은 JVM 위에서 실행되는 하나의 애플리케이션일 뿐입니다.1. Full GC란?Full GC는 JVM이 Heap 메모리에서 모든 세대(Young, Old, Permanent 혹은 Metaspace)를 스캔하여, 더 이상 참조되지 않는 객체를 정리하는 작업입니다. 이는 메모리를 회수하고 새로운 객체를 저장할 공간을 확보하기 위해 실행됩니다. Full GC 동작 과정: 1. Stop-the-Worl..
-
golang: 런타임(Runtime)이란?Back-End/Golang 2024. 11. 27. 22:18
Go의 Runtime은 Go 프로그램의 실행을 관리하는 핵심 구성 요소입니다. 이는 Go 런타임이 제공하는 동작과 기능을 이해하면, 프로그램의 성능을 최적화하고 동작 방식을 효율적으로 활용할 수 있습니다. Go 런타임의 주요 구성 요소와 개념을 자세히 설명드리겠습니다.1. Go Runtime이란?Go의 런타임은 Go 프로그램이 실행되는 동안 메모리 관리, 병행성 처리, 가비지 컬렉션, 스케줄링 등의 작업을 담당하는 표준 라이브러리 및 런타임 시스템입니다.Go는 컴파일러 기반 언어로, C/C++처럼 런타임이 없는 언어에 가깝지만, 병행성과 메모리 관리 등의 기능을 위해 런타임 환경을 제공합니다.2. 주요 기능과 구성 요소2.1 가비지 컬렉터 (Garbage Collector)Go는 자동 메모리 관리를 위해..
-
LeetCode: Two SumAlgorithm & Data Structure/LeetCode 2024. 11. 26. 22:28
Two Sum 문제 풀이: 두 가지 접근법문제 설명https://leetcode.com/problems/two-sum/ 배열 nums와 정수 target이 주어졌을 때, 합이 target이 되는 두 숫자의 인덱스를 반환하는 문제입니다.각 입력은 하나의 정답을 가지며, 동일한 요소를 두 번 사용할 수 없습니다.반환값은 인덱스 쌍으로, 순서는 상관없습니다.1. 브루트포스(Brute Force) 방법첫 번째로 떠오르는 직관적인 접근법은 모든 가능한 쌍을 검사하는 것입니다.이 방법은 단순하지만, 시간 복잡도가 높아 효율적이지 않습니다.시간 복잡도O(n²): 모든 요소를 두 번 반복하며 쌍을 검사하기 때문입니다.고랭 코드func twoSum(nums []int, target int) []int { for i..
-
오버 페치(Over-Fetch)와 언더 페치(Under-Fetch)란?Back-End 2024. 11. 25. 22:12
현대 웹 애플리케이션 개발에서는 클라이언트와 서버 간의 효율적인 데이터 통신이 매우 중요합니다. 그러나 이 과정에서 오버 페치(Over-Fetch)와 언더 페치(Under-Fetch)라는 문제가 발생할 수 있습니다. 이 두 가지 문제는 애플리케이션의 성능 저하, 사용자 경험 악화, 그리고 네트워크 리소스 낭비로 이어질 수 있습니다.오버 페치(Over-Fetch)란 무엇인가?오버 페치는 클라이언트가 실제로 필요로 하지 않는 불필요한 데이터까지 서버로부터 가져오는 상황을 말합니다. 이는 클라이언트가 요청한 데이터보다 더 많은 데이터를 받아오는 것으로, 네트워크 리소스의 낭비와 성능 저하를 초래합니다.예시사용자가 프로필 페이지에서 자신의 이름과 이메일만 확인하려고 합니다. 그러나 서버에서 프로필 정보를 요청하..