최신글

[Kafka] 카프카 알아보기
·
Infra & DevOps
Apache KafkaApache Kafka는 대용량 데이터를 빠르고 안정적으로 처리하는 오픈소스 분산 이벤트 스트리핑 플랫폼 이다. Producer(생산자)가 데이터를 보내면, Kafka가 이를 Topic 단위로 분산 처리하여 저장하고, Consumer(소비자)가 실시간으로 처리할 수 있게 한다. 다양한 시스템 간의 비동기 메시지 처리를 할 때 대중적으로 사용되는 기술이다. https://kafka.apache.org Apache KafkaApache Kafka: A Distributed Streaming Platform.kafka.apache.org Kafka 구조1. Producer (생산자)역할: 데이터를 Kafka로 전송하는 클라이언트예시: 주문 발생 시스템, IoT 센서, 사용자 로그 서버 등..
[Spring] 메모리 Queue + @Scheduling 배치 처리 - 부하 분산
·
Spring
대량으로 발생하는 사용자 행동 로그를 그때그때 DB insert 하게 되면 애플리케이션과 DB에 둘 다 부담이 커진다.로그가 초당 수십-수백건 씩 쌓이면 DB connection pool 고갈, 애플리케이션 성능 저하 등이 발생한다.일반적으로는 kafka, RabbitMQ 등 이벤트 / 메시지 기반 인프라를 이용하여 처리할 수 있지만 상황에 따라 애플리케이션 레벨에서 해결해야했다. 이 글에서는 다른 인프라를 추가하지 않고, 애플리케이션 레벨에서 로그를 모아뒀다가 Batch insert 하는 방법을 다룬다. 설계 과정문제 상황유저 행동 로그(일단은 페이지 이동, 클릭 등 이벤트)를 수집해야 하는 상황로그가 초당 수십-수백건 수집되면 DB 부하가 심해지고, 애플리케이션 부담이 커질 수 있음추가 인프라 도입(..
[Server] Linux 환경 NGINX 주요 명령어 및 파일 위치
·
Infra & DevOps
NGINX 상태 확인상태 확인 명령어 - systemd 기반sudo systemctl status nginx상태 확인 명령어 - init.d 기반 (구버전 Linux)sudo service nginx statusprocess 확인ps -ef | grep nginx NGINX 주요 파일nginx 실행 파일 경로/usr/sbin/nginx/usr/bin/nginx실팽파일 위치 확인which nginx nginx 설정 파일 경로실제 동작중인 설정파일 경로 확인nginx -tnginx 설정파일 위치/etc/nginx/nginx.confnginx.config 설정server 블록 리버스 프록시 예제클라이언트 -> http://my-server:90으로 요청 시 -> 90 포트로 받은 요청을 내부 localhost..
[Spring AI] 벡터 DB - Qdrant 스프링부트 연동과 ollama를 이용한 임베딩
·
Spring
Qdranthttps://qdrant.tech/ Qdrant - Vector DatabaseQdrant is an Open-Source Vector Database and Vector Search Engine written in Rust. It provides fast and scalable vector similarity search service with convenient API.qdrant.tech최근 AI 서비스 개발에서 핵심 키워드 중 하나는 벡터 데이터(Vector Data) 이다. 텍스트, 이미지, 오디오 같은 비정형 데이터를 임베딩(embedding) 모델을 통해 고차원 벡터로 변환하면, 이 벡터들을 서로 비교해 유사도 검색이나 컨텍스트 기반 검색을 수행할 수 있다. 여기서 중요한 건 ..
[Spring AI] Spring Boot에 LLM을 도입하기 전 꼭 알아야 할 RAG 개념 정리
·
Spring
이 글은 AI, RAG에 대해 기술적으로 전혀 모르는 상황에서 인앱 AI를 도입하기 위한 기본 개념을 정리합니다. 이 개념을 이해한 후에, 아래 Spring AI 실습 글을 보시길 바랍니다.(이 글에서 Spring AI는 직접적으로 다루진 않습니다.)[Spring] - [Spring] Spring AI + RAG 임베디드 AI 구축 방법 [Spring] Spring AI + RAG 임베디드 AI 구축 방법시작하기 전에, 이 글은 개념 정리는 없는 실습 글입니다.RAG 및 AI 개념에 대해 정리한 글이 있으니, 참고하세요.[Spring AI] Spring Boot에 LLM을 도입하기 전 꼭 알아야 할 RAG 개념 정리 [Spring AI] Spring Boinnovation123.tistory.com 인..

인기글

[Spring] 카카오 로그인 API 사용 방법
·
Spring
Kakao Developers이미지 설명에 각 이미지 내용에 대한 위치(경로) 적어뒀으니 참고해 주세요. 1. KakaoDevelopers 접속https://developers.kakao.com/ Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com 2. 애플리케이션 추가하기 3. 애플리케이션 추가 4.Rest API 키 확인 5. Web 플랫폼 등록 6. 사이트 도메인 설정 7. 카카오 로그인 활성화, Redirect URI 등록 8. 동의 항목 설정사용하려는 개인 정보 동의 설정 ( email, nickname 정보 ) 9. (추가) 카카오 로그인 버..
[JAVA/자료구조] 트라이(Trie) 개념, 직접 구현하기
·
자료구조 & 알고리즘
트라이(Trie) 트라이는 문자열을 저장하고, 빠르게 탐색하기 위한 트리 형태의 자료구조이다. 문자열 저장을 위한 메모리를 사용하지만, 탐색속도가 매우 빠르다. O(N) (Java에서 Queue,Stack,List와 다르게 Trie를 직접적으로 구현해놓은 라이브러리는 없다.) 트라이의 형태 Trie에 들어있는 문자열 apple, april bus, busy, beer, best 트라이의 구조(특징) 루트 노드 루트노드는 항상 비어있다. 루트노드의 자식노드는 각 단어들의 첫 글자들이다. endOfWord 표시 파란색으로 칠해져 있는 노드는 각 문자열의 마지막 글자이다. 각 노드 구성 각 노드의 자식노드들을 Map에 저장한다. 해당 노드가 단어의 마지막을 뜻하는 endOfWord를 저장할 boolean형 필..
[Network] 방화벽 - 인바운드 & 아웃바운드 규칙이란?
·
Web & Network
방화벽이란?방화벽(Firewall)은 네트워크 보안 시스템이다. 미리 정의된 보안 규칙에 따라 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 장치 또는 소프트웨어이다. 불법 접근, 악의적 접근, 트래픽 낭비 등을 방지하기 위해 사용된다. 방화벽은 트래픽 필터링, 네트워크 세분화, 감시 및 로깅, 인증, 프라이버시 보호 등의 여러 가지 기능을 한다.이중 인바운드 규칙, 아웃바운드 규칙은 트래픽 필터링 기능에 포함된다. 트래픽 필터링(접근 제어)트래픽 필터링이란 방화벽이 네트워크를 통해 주고받는 데이터 패킷을 검사하고 제어하는 것을 말한다.방화벽이 허용한 트래픽만 네트워크로 들어오거나 나갈 수 있도록 한다.트래픽 필터링 방식 중 패킷 필터링 방식은 데이터 패킷의 헤더 정보를 분석하여 트래픽을 허용/..
[Spring Boot] @PathVariable과 @RequestParam - 파라미터 받기
·
Spring
@PathVariable 경로변수 PathVariable을 사용하면 리소스 경로에 식별자를 넣어서 동적으로 URL에 정보를 담을 수 있다. URL 경로의 중괄호 { } 안쪽에 변수를 담고, 그 변수를 @PathVariable(" ")로 받아서 사용할 수 있다. 1. 기본 URL의{postId}와 매개변수 long orderId와 이름을 맞춰준다. @GetMapping ("/order/{orderId}") public String getOrder(@PathVariable String orderId){ log.info("orderId : {}", orderId); return "orderId:"+ orderId; } 요청 : http://localhost:8080/order/123 응답 : orderId:1..
Spring AI로 RAG 챗봇 만들기 – Ollama, pgvector 부터 API 까지
·
Spring
시작하기 전에, 이 글은 개념 정리는 없는 실습 글입니다.RAG 및 AI 개념에 대해 정리한 글이 있으니, 참고하세요.[Spring AI] Spring Boot에 LLM을 도입하기 전 꼭 알아야 할 RAG 개념 정리 [Spring AI] Spring Boot에 LLM을 도입하기 전 꼭 알아야 할 RAG 개념 정리이 글은 AI, RAG에 대해 기술적으로 전혀 모르는 상황에서 인앱 AI를 도입하기 위한 기본 개념을 정리합니다. 이 개념을 이해한 후에, 아래 Spring AI 실습 글을 보시길 바랍니다.(이 글에서 Spring AI는innovation123.tistory.com 특정 도메인의 정보를 LLM이 읽어서 챗봇처럼 대답해 주기 위한 기본 흐름은 아래와 같다.특정 도메인을 임베딩 하여 vector DB..
[Algorithm/Java] DFS(깊이 우선 탐색)
·
자료구조 & 알고리즘
DFS(Depth-First Search) : 깊이 우선 탐색 그래프 완전 탐색 : 모든 노드를 방문하고자 할때, 이 방법을 선택한다. 그래프의 시작 노드에서 출발하여 탐색할 한 쪽 분기를 정해서 최대깊이까지 탐색을 마친 후, 다른쪽 분기로 이동하여 다시 탐색을 수행하는 알고리즘이다. 재귀함수 또는 Stack 자료구조를 이용한다. 재귀함수를 이용하므로 stack overflow에 유의해야 한다. 스택 오버플로우(stack overflow)는 지정한 스택 메모리 사이즈보다 더 많은 스택 메모리를 사용하게 되어 에러가 발생하는 상황을 일컫는다. 1. 시간복잡도 (노드 수: N, 에지 수 E) 인접 리스트 노드의 개수가 많고, 간선 수가 적을 때 유리하다. 인접 행렬 노드의 개수가 적고, 간선 수가 많을 때 ..
[JPA] JPA 복합키 Entity Mapping @IdClass / @EmbeddedId
·
JPA & QueryDSL
복합키(Composite key)관계형 데이터베이스에서 복합키(Composite Key)란, 두 개 이상의 컬럼을 조합하여 하나의 기본 키(Primary Key)로 사용하는 것을 의미한다. 단일 컬럼만으로는 데이터의 고유성을 보장할 수 없을 때, 여러 컬럼을 묶어 하나의 키로 사용하는 방식이다. 아래 테이블처럼, 주문번호와 상품번호 두개를 묶어야 하나의 고유한 key가 되는 경우를 말한다.이런 경우에 JPA에서 단일키를 사용할 때보다 복잡하고, 귀찮은 작업이 필요하다. 복합키가 꼭 필요하지 않다면, 단일키 전략을 사용하는 것이 낫다고 생각하지만,이미 존재하는 테이블을 엔티티 매핑 해야할 때가 있을것이다.복합키 매핑 시 특징key class에 Serializable을 구현해야된다.key class에 equ..
[JAVA/자료구조] 우선순위 큐(Priority Queue) (Heap)
·
자료구조 & 알고리즘
우선순위 큐(Priority Queue)우선순위 큐는 Queue와 비슷하지만, 선입선출 구조인 Queue와 달리 Queue에 들어있는 자료 중 우선순위를 설정하여우선순위가 높은 순서대로 데이터를 꺼내는 구조이다.큐에 들어오는 모든 데이터에 우선순위가 존재하며, 데이터를 꺼낼 때 우선순위가 높은 순서대로 나온다.우선순위가 같은 경우에는 선입선출 방식을 따른다.자바의 우선순위 큐는 힙(Heap) 방식으로 구현되어 있다. 아래 링크에 Heap에 대해 정리해 두었으니 확인하길 바란다.2023.06.11 - [자료구조] - [JAVA/자료구조] 힙(Heap), 최소 힙(Min Heap), 최대 힙(Max Heap)우선순위 지정PriorityQueue는 생성할 때 우선순위를 지정해주어야 한다.자바에서 지원하는 기본..

HS_DEV_LOG

Contact
happyhsryu@gmail.com
Github
https://github.com/HSRyuuu