전체 글 404

문서가 AI로 변한다? 노트북LM(NotebookLM) 이란, 장단점 등 사용방법

안녕하세요! 오늘은 구글에서 새롭게 선보인 NotebookLM에 대해 자세히 알아보려고 합니다. 여러분도 이런 경험 있으시죠? 중요한 문서들이 쌓여있는데 필요한 정보를 찾기 위해 한참을 뒤져본 경험 말이에요.NotebookLM이 바로 이런 문제를 해결해주는 혁신적인 도구입니다. 저의 경험에서는 프로그램 개발자로 사업지원, 운영, 개발팀이 새로운 기능 개발건이 있어 문서를 공유하다 보니 많은 문서가 있고 의견이 조금 씩 달라 문서를 정리 및 분석하기 위해 사용하는 경우가 많이 있었습니다. NotebookLM, 도대체 뭔가요?NotebookLM은 구글에서 개발한 AI 기반의 연구 및 작성 도구입니다. 쉽게 말해서, 여러분이 가지고 있는 문서들을 업로드하면 그 내용을 완벽하게 이해하는 개인 AI 어시스턴트..

LLM(Open AI) 2025.06.10

실시간 SQL 인젝션 공격 대응 사례 분석, WAF(웹방화벽)의 방어

회사에서 업무중 SQL 인젝션 공격으로 인한 데이터 유출 시도 흔적이 있었다. 최근 SKT 유심 사건 이 후 통신분야나 다양한 분야에서 보안조치나 확인 스크립트 파일 들을 배포하고 있고 중요시하고 있다. WAF(웹방화벽) 에서 보안적 위협을 방어한 사례가 있어 정리하게 되었습니다. 1. 사건 개요발생일시: 2025년 6월 5일 10:45~11:00 (약 15분간)공격 대상: 회사 실 사이트공격자 IP: xxxx.xxx.xxx.xxx (대한민국-정자역 근처)공격 유형: 다중 SQL 인젝션 (시간 기반 블라인드, 에러 기반)최종 결과: WAF에 의한 완전 차단 성공 1.1 피해 현황시스템 침해: 없음데이터 유출: 없음서비스 중단: 없음고객 영향: 없음복구 작업: 불필요 2. 공격 통계 및 현황2.1 ..

업무 기록/ETC 2025.06.05

본인인증과 점유인증 기능 개발기 - 실무에서의 적용과 구현 방식

최근 진행했던 본인인증과 점유인증 기능 개발 프로젝트에 대해 상세히 정리해보려 합니다. 서비스 특성상 강화된 보안 요구사항을 만족시키면서도 사용자 편의성을 고려해야 했던 과정에서 겪었던 다양한 고민과 해결 방안들을 공유드리겠습니다. 프로젝트 배경 및 요구사항비즈니스 요구사항신규 회원가입 시 본인인증 의무화: 통신 가이드라인에 따른 실명 확인기존 사용자 점유인증 추가: 계정 보안 강화를 위한 2단계 인증 준비다양한 인증 수단 지원: 휴대폰, 이메일, 생체인증 등 확장 가능한 구조사용자 경험 최적화: 복잡한 인증 절차를 직관적이고 빠르게 처리 기술적 요구사항높은 가용성: 99.9% 이상의 서비스 안정성보안 강화: OWASP 가이드라인 준수 및 개인정보 암호화확장성: 월 100만 건 이상의 인증 요청 처리..

업무 기록/ETC 2025.06.02

25년 4월 ~ 5월 회고

4월에 기억에 남는 일 워너 브롱크호스트: 온 세상이 캔버스​최근 전시에 관심이 많다 '워너 브롱크호스크' 작품 전시회가 있어서 다녀왔다. 캔버스에 아주 작게 일상 속 익숙한 장면들을 새로운 시각으로 재해석해, 신선한 즐거움을 선산하는 작품들이었다.​기억에 남는 작품은 아래와 같다.수영은 아마도 가장 비사회적인 스포츠일 것입니다. 각자의 레인에서 혼자 경주하며 타인의 공간을 침법하지 않기 때문입니다.첫 번째 이 그림 설명이 특별한 의미가 없어 보이지만 기억에 많이 남는 문구였고 큰 그림이어서 기억에 많이 남는다.내 공간에 누가 침범하지 않길 나에게 관심을 좀 조금만 주면 좋겠다고 생각했다. 회사든 집이든.....​​ 두 번째 먼가 사진을 보면 뻥 뚫리고 시원한 느낌의 작품이어서 기억에 많이 남았다.​​​..

일기(잡) 2025.06.01

Redis 캐시 동기화 문제와 해결 전략 - 일관성, Race Condition, 분산 락 가이드와 실무에서 겪은 이슈와 대응 전략

1. Redis와 캐시의 기본 개념 캐시(Cache)란? 캐시는 자주 사용되는 데이터를 빠르게 접근할 수 있는 임시 저장소입니다. 다음과 같은 장점이 있습니다:응답 시간 단축으로 사용자 경험 향상데이터베이스와 백엔드 서비스의 부하 감소네트워크 트래픽 절감 Redis란? Redis(Remote Dictionary Server)는 인메모리 데이터 구조 저장소로, 주요 특징은 다음과 같습니다:인메모리 저장으로 빠른 읽기/쓰기 성능 제공문자열, 해시, 리스트 등 다양한 데이터 구조 지원선택적 디스크 저장 가능(RDB 스냅샷, AOF 로그)복제 및 고가용성 지원(마스터-슬레이브, Sentinel, Cluster)원자적 연산 처리 가능 2. 캐시 전략의 기본 패턴1. Cache-Aside (Lazy Loading)..

DB 2025.05.16

백엔드 유닛 테스트 JUnit5 + Mockito

"테스트가 없는 코드는 신뢰할 수 없다"- Kent Beck - 실무에서 안정적인 백엔드 시스템을 개발하려면 "작동하는 코드"뿐만 아니라 "신뢰할 수 있는 테스트 코드"가 필수입니다. 이번 글에서는 Spring Boot 환경에서 JUnit5와 Mockito를 사용한 유닛 테스트의 모든 것을 실무 코드 예제와 함께 자세히 알아보겠습니다. 유닛 테스트란 무엇인가?유닛(Unit)은 프로그램의 최소 구성 단위로, 일반적으로 하나의 클래스 또는 메서드를 의미합니다. 유닛 테스트(Unit Test)는 이 단위를 독립적으로 검증하는 테스트입니다.핵심 목적: 외부 시스템(데이터베이스, 네트워크, API 등)과 분리된 상태에서 비즈니스 로직의 동작을 빠르게 검증하는 것 유닛 테스트와 통합 테스트의 구분 단일 컴포..

Java/Java 2025.05.16

[Linux Crontab] - Cron과 Crontab 시간설정 표현식 활용한 이미지/파일 자동 삭제 시스템 정리

리눅스 cron 시스템이란? cron은 리눅스/유닉스 시스템에서 특정 시간이나 간격으로 명령어나 스크립트를 자동으로 실행할 수 있게 해주는 작업 스케줄러입니다. 마치 알람시계처럼 "이 시간에 이 일을 해라"라고 컴퓨터에게 지시하는 도구입니다. crontab이란?crontab(cron table)은 cron 작업을 설정하는 설정 파일입니다. 사용자별로 crontab을 가질 수 있으며, 이 파일에 실행할 명령어와 실행 시간을 지정하면 시스템이 자동으로 해당 시간에 명령을 실행합니다. 이미지/파일 자동 삭제를 위한 cron 구성 방법1. 기본 crontab 사용법# crontab 편집crontab -e# 현재 crontab 목록 보기crontab -l 2. crontab 형식 crontab 항목은 다음과..

업무 기록/ETC 2025.05.12

윈도우 - 회사 내부망 화면보호기 끄거나 안되게 하는 방법 절전모드 방지 스크립트

일반 PC는 화면보호기를 끄거나 절전모드를 끄면 문제가 없습니다.하지만기본적으로 회사에서 보안툴이 깔려있어화면보호기를 끄기가 불가능하여시간이 지나면 화면보호기나 절전 모드로 변경되는불편함이 있습니다. 메모장에서 "아무이름.vbs" 을 만들어주고 하단 내용 코드를 추가해주고 실행하면 됩니다. Set ws = CreateObject("WScript.shell")DoWscript.Sleep 59000ws.SendKeys "{SCROLLLOCK}{SCROLLLOCK}"Loop 이 코드는 VBScript를 사용한 간단한 스크립트로, 컴퓨터가 절전 모드로 들어가거나 화면 보호기가 활성화되는 것을 방지하는 역할을 합니다. Set ws = CreateObject("WScript.shell") - WScript...

업무 기록/ETC 2025.05.07

KISA K-Shield Spring 프레임워크 시큐어코딩 SonarQube 소나큐브 (정적 분석 도구, ISMS)

ISMS 심사 간 웹 사이트 버그, 보안 취약점을 어떻게 관리하고 있냐고 인터뷰하는 경우가 있는데 이 때 소나큐브를 사용한다고 이야기를 하고 있다.이번 보안 교육 간 소나큐브 사용 실습이 있어 정리하게 되었다. 소나큐브(SonarQube)는 소스 코드의 품질과 보안 결함을 자동으로 분석해주는 정적 코드 분석 도구입니다. 개발자가 작성한 코드에서 버그, 코드 스멜(code smell), 보안 취약점 등을 찾아내고, 이를 지속적으로 모니터링하여 코드의 품질을 향상시키는 데 도움을 줍니다. 소나큐브 주요 특징 정적 코드 분석: 실행하지 않고 코드 자체를 분석하여 문제를 식별합니다.지원 언어: Java, Python, JavaScript, C#, Kotlin 등 다양한 언어 지원.CI/CD 통합: Je..

업무 기록/ETC 2025.05.02

KISA K-Shield Spring 프레임워크 시큐어코딩(SSRF, XSS, CSRF, 파일업로드,탐지, 테스트)

1. SSRF (Server-Side Request Forgery)1.1 개념 비유마치 누군가가 내 대신 전화를 걸어 “내 번호”가 아닌 “내 전화기”를 통해 통화하도록 속이는 것과 같습니다.서버가 외부 URL을 요청해 주는 기능(fetch(), HttpClient 등)을 악용내부망(사설 IP), AWS/GCP 메타데이터 서버 등에 마음대로 접근1.2 공격 흐름사용자가 ?url=http://example.com 같이 URL을 입력서버는 검증 없이 전달받은 URL로 요청공격자는 url을 http://169.254.169.254/latest/meta-data/로 바꿔 내부 정보 조회1.3 예시 코드 (Node.js)// 취약: 검증 없이 fetchapp.get('/proxy', async (req, res)..

Java 2025.05.02

KISA K-Shield Spring 프레임워크 시큐어코딩

1. 시큐어 코딩 개요 * 공급망 보안보안 사고 사례 분석과 교훈:계정 관리 미흡 관련 사고 교훈: 정기적인 계정 감사, 접근 제한, 보안 시스템 상시 모니터링 필요주기적인 계정 관리 부재로 SQL 인젝션 공격에 취약침입 탐지/차단 시스템 운영 미흡외부에서 관리자 사이트 접근 가능취약한 인증 시스템 관련 사고 교훈: 다중 인증(MFA) 구현, 직원 정보 보호 강화 필요단순 ID/비밀번호 인증만 사용임직원 메일 주소 노출솔라윈즈 공급망 공격 교훈: 공급망 보안 관리, 코드 서명 보안 강화 필요신뢰할 수 있는 업데이트에 악성코드 삽입코드 서명 인증서 유출SQL 인젝션 공격 도구들SQLMap, Mole, Havij 등 자동화 도구가 존재하여 공격이 더욱 쉬워짐데이터베이스 전체가 유출될 수 있으며, 오프라인 패..

Java 2025.04.28

Windows 환경에서 Kafka와 Docker download및 실행과 테스트

Windows 환경에서는 Kafka가 기본적으로 Linux/Unix 환경에 최적화되어 있기 때문에, Docker와 WSL을 활용하면 네이티브에 가까운 성능을 얻을 수 있습니다. 1. Docker에서 Kafka를 실행하는 이유Docker를 사용하여 Kafka를 실행하는 데는 여러 가지 중요한 이유가 있습니다:환경 일관성: Docker는 어떤 환경(개발, 테스트, 프로덕션)에서도 동일한 설정으로 Kafka를 실행할 수 있게 해줍니다.쉬운 설치: 복잡한 설치 과정 없이 이미지를 내려받아 바로 실행할 수 있습니다.격리성: Kafka와 의존성 있는 서비스들이 호스트 시스템에 영향을 주지 않습니다.리소스 효율성: 전체 VM을 사용하는 것보다 적은 리소스로 실행 가능합니다.빠른 시작/중지: 컨테이너를 빠르게 시작하고..

업무 기록/ETC 2025.04.25

[2024 정처기 실기 3회] 정보처리기사 3회 실기 해설 및 설명

1번 - 파이썬 문제def func(lst):# 리스트 길이의 절반만큼 반복 (인덱스 0, 1, 2) for i in range(len(lst) // 2):# 리스트의 앞쪽 요소와 뒤쪽 요소를 교환# lst[i]와 lst[-i-1](뒤에서 i+1번째 요소)의 위치를 바꿈 lst[i], lst[-i-1] = lst[-i-1], lst[i]# 초기 리스트 정의lst = [1,2,3,4,5,6]# func 함수 호출 - 이 함수는 리스트를 뒤집음func(lst)# lst[::2]는 짝수 인덱스(0,2,4) 요소들의 합에서# lst[1::2]는 홀수 인덱스(1,3,5) 요소들의 합을 뺀 값을 출력print(sum(lst[::2]) - sum(lst[1::2]))실행 과정을 상세히 살펴보겠습니다..

vscode marketplace download extension 버튼 없어짐 : VSIX 없어진 다운로드 버튼??

최근 Visual Studio Marketplace에서 확장 프로그램 다운로드 버튼이 사라지면서, 오프라인 설치나 백업 목적의 다운로드가 불편해졌습니다. 특히 사내망이나 인터넷이 차단된 환경에서는 이 문제가 더 크게 다가오죠. 다행히도, 예전 방식대로 직접 URL을 통해 .vsix 파일을 받아 설치하는 방법이 여전히 유효합니다. 이 글에서는 그 방법을 정리해보겠습니다.  기존에는 있었던 "Download Extension" 버튼... 지금은?? 예전에는 아래와 같이 확장 페이지에서 쉽게 .vsix 파일을 다운로드할 수 있는 버튼이 있었습니다.지금은 더 이상 제공되지 않습니다! 지금 가능한 방법: 직접 URL 생성 예전 공식 문서에 따르면, 다음과 같은 형식의 URL로 확장 프로그램을 직접 다운로드할 수 ..

업무 기록/ETC 2025.04.11

스트랭글러 패턴(Strangler Pattern): 레거시 시스템 현대화의 지혜와 어원

자연에서 배운 시스템 전환 전략소프트웨어 세계에서 레거시 시스템을 현대화하는 것은 항상 큰 도전입니다. 한 번에 모든 것을 교체하는 '빅뱅' 방식은 위험이 크고, 오랜 서비스 중단을 초래할 수 있습니다. 이러한 문제를 해결하기 위해 등장한 것이 스트랭글러 패턴(Strangler Pattern)입니다.  스트랭글러 무화과에서 영감을 얻다이 패턴의 이름은 호주 열대우림에서 볼 수 있는 '스트랭글러 무화과(Strangler Fig)' 식물에서 유래했습니다. 소프트웨어 설계 패턴의 대가인 마틴 파울러(Martin Fowler)가 2004년에 이 패턴을 명명했을 때, 그는 이 식물의 독특한 생존 방식에서 영감을 받았습니다.스트랭글러 무화과는 다음과 같은 과정으로 성장합니다:다른 나무의 가지에 씨앗이 떨어져 발아합..

업무 기록/ETC 2025.04.11

PreparedStatement 란? 기본개념, 장점, 성능향상, 메서드 활용과 주의사항 등

(구)웹에서 무지성으로 대충 내용만 알고 사용하던 방식을 이번에 정리가 하고 싶어서 작성하게 되었습니다.   PreparedStatement란?PreparedStatement는 자바(Java)의 JDBC(Java Database Connectivity) API에서 제공하는 인터페이스로, 데이터베이스와 상호작용할 때 SQL 쿼리를 안전하고 효율적으로 실행할 수 있게 해주는 도구입니다.  기본 개념PreparedStatement는 일반적인 Statement와 달리, SQL 쿼리를 미리 컴파일하고 실행 시점에 파라미터 값만 바인딩하는 방식으로 동작합니다.  작동 방식 (단계별) SQL 쿼리 준비: 물음표(?)를 사용하여 값이 들어갈 자리를 표시합니다.쿼리 컴파일: 데이터베이스가 쿼리를 미리 분석하고 실행 계획..

Java/Java 2025.04.09

LLM의 중추, 트랜스포머 아키텍처

2편 LLM의 중추, 트랜스포머 아키텍처1. 트랜스포머 아키텍처란?트랜스포머(Transformer)는 2017년 구글이 발표한 "Attention Is All You Need" 논문에서 소개된 딥러닝 모델로, 자연어 처리(NLP) 분야에서 획기적인 변화를 가져왔다. 기존의 순차적 처리 방식(RNN, LSTM)과 달리 병렬 연산이 가능하여 학습 속도가 빠르고 성능이 뛰어나다. 트랜스포머의 핵심 개념은 어텐션 메커니즘(Attention Mechanism)이며, 특히 셀프 어텐션(Self-Attention)과 멀티 헤드 어텐션(Multi-Head Attention)을 활용하여 문맥을 효과적으로 파악한다. 또한, 기본적으로 인코더-디코더(Encoder-Decoder) 구조를 가지며, 이후 BERT, GPT 등의..

LLM(Open AI) 2025.04.04

메시징 웹 애플리케이션 아키텍처 분석

메시징 기능을 갖춘 웹 애플리케이션의 현대적인 아키텍처에 대해 상세히 알아보겠습니다. 이 아키텍처는 실시간 메시징, 확장성, 모니터링 기능을 갖춘 엔터프라이즈급 시스템을 위해 설계되었습니다.  전체 아키텍처 구성이 메시징 웹 아키텍처는 다음과 같은 주요 구성 요소로 이루어져 있습니다:개발 환경 (Development)CI/CD 파이프라인프론트엔드 서버백엔드 서버메시지 브로커캐시 시스템데이터베이스모니터링 시스템테스트 인프라이미지 서버각 구성 요소의 역할과 상호작용을 자세히 살펴보겠습니다.  1. 개발 환경 (Development)개발자는 코드를 작성하고 Git을 통해 소스 코드를 관리합니다:Git: 분산형 버전 관리 시스템으로, 개발자는 이를 통해 코드 변경사항을 푸시합니다.Git Push: 개발자가 코드..

웹 애플리케이션 관리자 사이트 아키텍처 분석

프로젝트를 하면서 잊지 않기 위해 정리용으로 작성하였습니다.관리자 사이트 아키텍처에 대해 상세히 알아보겠습니다. 이 아키텍처는 대규모 트래픽을 처리하고 개발 효율성을 높이는 데 최적화되어 있습니다.    전체 아키텍처 구성 이 아키텍처는 크게 다음과 같은 주요 구성 요소로 이루어져 있습니다:개발 환경 (Development)CI/CD 파이프라인 (Jenkins)서버 인프라 (프론트엔드, 백엔드)테스트 인프라데이터베이스 시스템 각 구성 요소의 역할과 상호작용을 자세히 살펴보겠습니다. 1. 개발 환경 (Development) 백엔드 개발 환경백엔드는 다음과 같은 기술 스택으로 구성되어 있습니다:Kotlin: JVM 기반의 현대적인 프로그래밍 언어로, Java와 완벽한 상호 운용성을 제공하면서도 더 간결한 문..

LLM의 기초 뼈대 세우기

최근 몇 년간 대형 언어 모델(LLM, Large Language Model)의 발전은 인공지능(AI) 분야에서 가장 뜨거운 이슈 중 하나입니다. 챗GPT와 같은 AI 챗봇부터 코드를 작성하는 AI까지, LLM이 우리의 삶과 업무에 미치는 영향은 점점 커지고 있습니다. 이번 글에서는 LLM의 기초 개념부터 현재의 발전 과정, 그리고 미래의 전망까지 깊이 있게 살펴보겠습니다.    1. 딥러닝과 언어 모델 LLM을 이해하려면 먼저 딥러닝과 언어 모델의 기본 개념을 알아야 합니다.  딥러닝(Deep Learning)이란? 딥러닝은 다층 신경망(Deep Neural Network)을 활용하여 데이터를 학습하는 기계 학습 기법입니다. 특히 자연어 처리(NLP, Natural Language Processing)..

LLM(Open AI) 2025.04.01

웹 애플리케이션에서 특수문자와 유니코드 문자 처리 시 발생하는 XSS 이슈

웹 애플리케이션을 개발하다 보면 사용자 입력값에 특수문자나 유니코드 문자가 포함될 때 예상치 못한 문제가 발생하곤 합니다. 특히 보안과 관련하여 크로스 사이트 스크립팅(XSS) 공격을 방지하면서도 특수문자를 올바르게 처리해야 하는 상황에서는 더욱 주의가 필요합니다.이번 글에서는 제가 최근 경험한 문제와 그 해결 과정을 공유하고자 합니다.      문제 상황 20년이 넘은 웹이 있는데 그곳에서 회사 스팸 필터링 시스템을 운영하고 있습니다. 이 시스템에서 스팸 단어를 등록하고 검색하는 과정에서 다음과 같은 문제가 발생했습니다그리스 문자와 같은 유니코드 문자(예: "νιΡ")가 HTML 엔티티(예: "νιΡ")로 변환되어 저장되는 문제특수문자가 포함된 스팸 단어(예: "[비+&씨]")가 검색되지 않는 문제특수..

업무 기록/ETC 2025.03.31

25년 1분기 회고(1월 ~ 3월)

작성 이유벌써 서른, 하지만 혼자 아직 만 28이라고 생각하며...2025년 벌써 1/4 가 정신없이 흘러갔다. 새해 집안에 상을 치르면서 서른이 되었다는 사실조차 실감할 틈 없이 한 달이 지나가 버렸다. 그래서인지 특별히 기억에 남는 순간도 많지 않았다.어느덧 서울에 올라온 지도 3년. 하지만 그동안 기억에 남을 만한 문화생활을 한 적이 거의 없었다.설령 무언가를 했더라도 인상적인 기억으로 남아 있지 않았다. 돌이켜보면 친구들과 술을 마시며 시간을 보낸 것이 대부분이었고, 그렇게 나이만 먹어가고 있다는 생각이 들었다. 이대로 시간이 흘러가는 것이 아쉽다는 생각이 들었다.그래서 이제부터는 좀 더 다양한 활동을 경험하고, 의미 있는 추억을 많이 쌓아가고 싶다.   1월 기억에 남는 활동   고마운 사람들 ..

일기(잡) 2025.03.30

Elasticsearch & Kibana 다운로드 설치 및 설정

1. Elasticsearch 설치 방법(1) Elasticsearch 설치 전 필수 사항Java 설치 불필요 (Elasticsearch 7.x 이상은 내장 JDK 포함)최소 RAM 2GB 이상 권장지원 운영체제: Windows, macOS, Linux  (2) Elasticsearch 설치 방법 (OS별 가이드) 1) Linux/macOS (Tar 패키지 설치)wget tar -xzf elasticsearch-8.10.2-linux-x86_64.tar.gzcd elasticsearch-8.10.2최신 버전 다운로드 후 압축 해제 2) Windows (ZIP 패키지 설치)공식 다운로드 페이지에서 ZIP 파일 다운로드압축 해제 후 bin/elasticsearch.bat 실행 3) Docker 설치 방법do..

DevOps 2025.03.15

Kibana와 Grafana: 차이점, 역사, 사용 사례와 시계열 데이터 처리

키바나와 가장 자주 비교되는 시각화 도구로 키바나를 포크해서 만든 그라파나에 대해서 정리하게 되었습니다. 간단하게 키바나는 엘라스틱에서 실행되는 로그메세지 분석에 사용되고 그라파나는 시스템 관점 CPU, IO 등 사용율과 같은 메트릭 시각화하는데 특화된걸로 인지하고 있지만 좀 더 자세하게 정리하기 위해 글을 남기게 되었습니다.  1. Grafana와 Kibana 개요Grafana와 Kibana는 데이터 시각화 도구이지만, 처리하는 데이터 유형과 목적이 다릅니다. 기능  Grafana 🟠 Kibana 🔵 주요 역할메트릭 데이터 모니터링로그 및 이벤트 분석데이터 소스Prometheus, InfluxDB, MySQL 등 다양한 지원Elasticsearch 전용시각화 유형시계열 그래프, 게이지, 테이블 ..

DevOps 2025.03.12

메시지 큐(Message Queue)와 Kafka란

대규모 시스템에서는 데이터 처리를 효율적으로 관리하기 위해 메시지 큐(Message Queue, MQ)를 사용합니다. 메시지 큐는 다양한 구현체가 있으며, 그중에서도 Apache Kafka는 가장 널리 사용되는 분산 메시징 시스템 중 하나입니다. 이 글에서는 메시지 큐의 개념과 Kafka의 내부 구조 및 동작 방식을 깊이 있게 살펴보겠습니다. 1. 메시지 큐(Message Queue)란?메시지 큐는 생산자(Producer)가 보낸 메시지를 소비자(Consumer)가 받아 처리하는 비동기 방식의 통신 시스템입니다.이 방식은 여러 시스템이 독립적으로 동작할 수 있도록 하며, 부하 분산(Load Balancing)과 비동기 처리(Asynchronous Processing)를 가능하게 합니다. 메시지 큐의 ..

DevOps 2025.02.26

대용량 데이터 처리 방식 과 흐름

1. 코드 실행 순서 및 구조대용량 데이터를 처리하는 방식은 일반적으로 다음과 같은 단계를 거칩니다.데이터 로드 (Load Data)데이터베이스, 파일, API, 메시지 큐(Kafka 등)에서 데이터를 읽어옵니다.데이터 분할 (Partitioning)전체 데이터를 한 번에 처리하면 성능이 저하되므로, 여러 개의 작은 청크(batch)로 나눕니다.병렬 처리 (Parallel Processing)각 청크를 개별 스레드에서 병렬로 처리합니다.스레드 풀(Thread Pool)을 활용하여 일정 개수의 스레드만 실행되도록 제어합니다.비동기 실행 (Asynchronous Execution)비동기 방식으로 데이터를 처리하여 블로킹(blocking)을 최소화합니다.데이터 저장 (Save Data)처리된 데이터를 데이터베..

업무 기록/ETC 2025.02.23

스레드 개수 설정 및 성능 최적화와 방법들

1. 스레드란? 스레드는 프로그램에서 실행되는 가장 작은 단위의 작업 흐름입니다. 여러 개의 스레드를 사용하면 병렬 처리를 통해 성능을 향상시킬 수 있습니다. CPU가 여러 개의 스레드를 동시에 실행할 수 있기 때문에, 적절한 개수의 스레드를 사용하면 응답 속도를 개선하고 자원을 효율적으로 활용할 수 있습니다.  스레드 개수 설정 방법 및 적정 개수 판단 방법비동기 작업에서 스레드 풀(ThreadPool) 크기를 설정할 때,*"최적의 스레드 개수"**를 결정하는 것은 매우 중요한데, 이를 판단하는 방법을 설명할게요. 1. 스레드 개수 설정 기준 (CPU vs. I/O 작업에 따라 다름)스레드 개수를 설정할 때는 어떤 종류의 작업을 처리하는지에 따라 다르게 결정해야 함.작업 유형 설명 스레드 개수 설정 방..

업무 기록/ETC 2025.02.20

Spring Boot 비동기 처리(@Async)로 성능 향상 원리와 동기/비동기

1. 코드 작동 방식 이 코드는 이미지 다운로드 및 변환 작업을 비동기적으로 실행하는 역할을 합니다. 실행 흐름1. 클라이언트가 processImage(imageUrl)을 호출2. @Async가 적용된 메서드이므로 새로운 스레드에서 실행3.  메서드 실행 후 즉시 CompletableFuture 객체를 반환 (메인 스레드 블로킹 없음)4.  백그라운드에서 downloadAndProcessImage(imageUrl) 실행5.  작업 완료 후 processedImageUrl을 반환2. 비동기 성능 향상 원리 (동기 vs. 비동기)구분 동기 처리 (Synchronous) 비동기 처리 (Asynchronous)실행 방식하나의 작업이 끝날 때까지 대기여러 작업을 동시에 실행스레드단일 스레드에서 순차 실행별도의 스..

Spring 2025.02.19

프로젝트 : CDN과 24년 선거 대비 자체 이미지 서버 개발 및 최적화

CDN(Content Delivery Network) 적용 및 운영 경험CDN은 전 세계 여러 지역에 분산된 엣지 서버(Edge Server)를 통해 사용자에게 정적 및 동적 컨텐츠를 빠르고 안정적으로 전달하는 기술입니다. 대규모 트래픽을 효율적으로 분산하고, 웹사이트의 로딩 속도를 단축하며, 서버 부하를 줄이는 데 중요한 역할을 합니다. 프로젝트 배경24년 선거 기간 중 Kakao, RCS, MMS 메시지 대량 발송 시 서버 다운 및 전송 속도 저하 문제 발생 가능성기존 메시지 서버에서 이미지 트래픽이 혼합되어 처리되면서 부하 급증트래픽 폭증에도 안정적으로 이미지 전송을 처리할 수 있는 독립적인 이미지 서버 필요 주요 개발 내용자체 이미지 서버 설계 및 구축메시지 본문과 이미지 트래픽을 분리하여 전용 ..

구글 애널리틱스 활용 웹 개발 적용

구글 애널리틱스란?구글 애널리틱스는 웹사이트의 트래픽과 사용자 행동을 분석할 수 있는 무료 웹 분석 도구입니다. 웹사이트에 방문하는 사용자들의 행동, 유입 경로, 체류 시간 등 다양한 데이터를 수집하고 분석할 수 있습니다. 주요 기능과 특징1. 실시간 모니터링현재 웹사이트를 방문 중인 사용자 수사용자들이 보고 있는 페이지사용자의 지리적 위치     2. 사용자 행동 분석페이지별 방문 시간이탈률과 전환율사용자의 이동 경로 3. 트래픽 소스 분석유입 경로(검색엔진, 소셜미디어, 직접 방문 등)검색어 분석캠페인 효과 측정 왜 구글 애널리틱스인가?개발한 프로젝트는 다양한 메시징 서비스를 제공하는 플랫폼입니다. 이런 복잡한 서비스에서는 사용자들이 어떤 기능을 주로 사용하는지, 어떤 부분에서 어려움을 겪는지 파악하..

DevOps 2025.02.12