전체 글 413

Tomcat vs Netty 핵심 아키텍처 차이점 정리

대용량 트래픽 처리 아키텍처에서 기존 Spring MVC(Tomcat) 환경과 모던 클라우드 네이티브(Netty) 환경의 차이를 이해하는 것은 핵심입니다. 1. Apache Tomcat: Thread-per-Request 모델 (동기/블로킹)기존 Spring Boot 웹 애플리케이션의 기본 내장 WAS입니다.동작 원리: 클라이언트의 요청 1개당 1개의 스레드를 할당하여 처리합니다.I/O 방식 (Blocking): 요청을 처리하는 스레드가 데이터베이스에서 데이터를 읽어오거나 외부 API를 호출할 때, 응답이 올 때까지 스레드는 다른 작업을 하지 못하고 대기(Block)합니다.치명적 약점: 트래픽이 폭증하면 설정된 스레드 풀(Thread Pool, 기본 200개)이 빠르게 고갈됩니다. 대기열(Queue)까..

제각각인 9개의 레거시 DB: '표준화'와 '하이브리드 통합'으로 휴먼 에러 제로화하기

대규모 시스템을 장기간 운영하다 보면, 흔히 '괴물(Legacy Monster)'이 탄생하곤 합니다.저희 메시지 발송 시스템은 MMSGW1부터 MMSGW9까지 9개의 서버와 DB로 운영되고 있었습니다. 문제는 이들이 단순히 복제된 쌍둥이가 아니라, 서로 다른 기능을 가진 '이복 형제'들이었다는 점입니다. MMSGW 1: 카카오 알림톡 기능 있음MMSGW 2: 카카오 없음, RCS 기능 있음MMSGW 3: 둘 다 없음 (문자 전용) 이처럼 DB마다 테이블 구조와 기능이 제각각(Inconsistency)이다 보니, 개발자나 운영자가 배포할 때마다"이번 쿼리는 2번 DB에서 에러가 나지 않을까?"를 고민해야 했고, 이는 잦은 휴먼 에러(Human Error)로 이어졌습니다.이번 글에서는 이 복잡한 비표준화 환..

고객사가 메시지 발송 후 Report를 가져가지 않아 Redis에 데이터가 쌓임 (10만 건 이상 적체 시 타 고객사 조회 지연 발생)

1. Situation (상황 제시) "메시징 API 서비스 운영 중, 특정 고객사가 발송 결과(Report) 데이터를 제때 수신하지 않아 공유 저장소인 Redis에 데이터가 과하게 적체되는 현상이 발생했습니다." 2. Task (문제 정의 및 목표) "당시 Redis에 약 10만 건 이상의 데이터가 쌓이면, 해당 고객뿐만 아니라 다른 일반 고객들의 리포트 조회까지 지연(Delay)되는 전파 장애가 발생했습니다. 이를 해결하기 위해 실시간 모니터링 체계를 구축하고, 서비스 부하를 최소화하며 데이터를 관리할 대응 프로세스가 필요했습니다." 3. Action 임계치 설정 및 알람화: "Nagios를 활용해 Redis의 리포트 적체 건수를 모니터링하고, 장애 전조 증상을 파악하기 위해 임계치를 설정하..

Error 2026.02.27

[Spring Boot] 레거시 대규모 트래픽 환경의 무중단 DB 마이그레이션 전략: Config 기반 라우팅 프록시 설계

Engineering SummaryChallenge: 물리적으로 파편화된 수십 대의 오라클 DB를 서비스 중단 없이 통합해야 하는 고위험 과제Solution: 코드 배포 없이 설정(Configuration)만으로 DB 연결을 동적 스위칭하는 Routing Proxy 패턴 도입Impact: 배포 리스크 0%, 롤백 시간 즉시(Instant), 단계적 파이프라인 구축을 통한 안정적 이관 달성 1. Problem: "달리는 기차의 바퀴를 갈아 끼워야 한다" 현재 운영 중인 메시징 시스템은 오랜 기간 확장을 거치며 데이터가 MMSGW1 ~ MMSGW9 등 다수의 오라클 서버에 샤딩(Sharding)되어 있는 상태였습니다. 이를 MMSGW0이라는 통합 DB로 합치는 미션이 주어졌습니다.하지만 24시간 트래픽이 발..

업무 기록 2025.12.04

2025년 2회 정보처리기사 실기 해설 초보 비전공자

문제 1. 파일 구조와 접근 방법 데이터베이스의 물리 설계 시, 레코드에 접근하는 방법은 순차 접근 방법, [ ] 방법, 해싱 방법 등이 있다.이 중 [ ] 방법은 레코드의 키 값과 포인터를 쌍으로 묶어 저장하며 검색 시 키 값을 기준으로 빠르게 탐색할 수 있도록 설계되어 있다.이 방식은 검색 속도가 빠르며 쌍으로 구성된 자료 구조를 사용하여 해당 키가 가리키는 주소를 통해 원하는 레코드를 직접 찾을 수 있다. 정답: 인덱스 (또는 색인)도서관에서 책을 찾는 방법으로 이해해보세요!순차 접근 = 서가를 처음부터 끝까지 뒤지기📚📚📚📚📚📚 → 하나씩 다 찾아보기"수학책 어디있지?" 하면서 첫 번째 책부터 마지막까지 확인→ 시간이 오래 걸림 😅 인덱스 접근 = 도서관 컴퓨터 검색컴퓨터에 "파이썬 ..

레거시 JSP 프로젝트 인코딩 (euc-kr, UTF-8)

레거시 JSP 프로젝트 인코딩 지옥 탈출기오래된 JSP 프로젝트를 유지보수하다 보면 마치 귀신에 홀린 듯한 오류들을 마주할 때가 있습니다. 서버만 다를 뿐 기능은 똑같은 사이트인데 어디는 euc-kr 어디는 UTF-8, 원본 코드도 없어 서버에서 직접 작업을 하다보니 많은 문제가 발생하였습니다. 오랜 시간 유지되다 보니 주석 처리된 코드들도 너무 많고..... 분명 코드 로직은 멀쩡한데 JSP 파일이 컴파일되지 않거나, 로컬에서는 잘 되던 한글이 서버에만 올리면 외계어로 변해버리는 현상이죠. 최근 겪었던 일련의 오류들을 통해, 이 모든 문제의 배후에 있던 '인코딩(Encoding)'이라는 범인을 잡는 과정을 공유하고자 합니다. 🐛 증상 1: JSP 컴파일 오류 (JSP를 위한 클래스를 컴파일할 ..

Error 2025.09.17

바이브 코딩(Vibe Coding) 이란 및 어원

바이브 코딩(Vibe Coding) 완벽 가이드AI와 대화하듯, ‘느낌’대로 코드를 짜는 시대가 왔다 1. 어원(語源)과 탄생 배경 바이브 코딩이라는 단어는 두 가지 단어에서 왔습니다.Vibe: 영어로 ‘분위기, 느낌, 기운’을 뜻합니다.→ “느낌을 살린다”라는 뉘앙스를 갖고 있죠.Coding: 프로그래밍, 즉 코드를 작성하는 행위입니다.이 두 단어를 합쳐 “느낌(vibe)에 따라 AI와 대화하며 코드를 작성하는 방식”을 의미하게 됐습니다.이 용어는 전 테슬라 AI 책임자이자 딥러닝 권위자 안드레이 카파시(Andrej Karpathy)가 SNS와 강연에서 처음 언급하며 알려졌습니다.그가 말한 취지는 “코드 작성의 세세한 문법보다, 내가 원하는 동작을 자연어로 설명하고 AI에게 구현하게 하는 흐름”이었죠...

LLM(Open AI) 2025.08.14

LangChain, RAG, ReAct, LangGraph의 핵심 이론 - KITRI 교육

LangChain, RAG, ReAct, LangGraph 비교 및 학습 순서 LangChain 기본 이론1. 핵심 개념LangChain = Language Model + Chain (연결)목표: LLM을 다른 컴포넌트들과 쉽게 연결하여 복잡한 애플리케이션 구축 2. 주요 구성 요소a) Components (컴포넌트)# 프롬프트 템플릿prompt = ChatPromptTemplate.from_messages([ ("system", "당신은 도움이 되는 AI입니다."), ("user", "{input}")])# LLM 모델llm = ChatOpenAI(model="gpt-4")# 출력 파서parser = StrOutputParser() b) Chains (체인)# 컴포넌트들을 연결chain ..

LLM(Open AI) 2025.07.14

LangChain 과 Hugging Face를 활용한 한국어 AI 개발 다운로드 및 환경 구성 - Kitri (네이버 하이퍼클로바 모델, SKT의 KoGPT2, Anaconda, CURSOR, LangSmith 등)

KITRI 교육은 OpenAi API 유료버전으로 실습을 합니다. 저는 국내용 신용카드만 있어 사용할 수 없었습니다. OpenAI API의 유료화로 인해 무료 대안을 찾고 있는 개발자들을 위한 실습 환경 구성 가이드입니다. 이 글에서는 네이버 하이퍼클로바 모델을 Hugging Face를 통해 LangChain과 연동하는 방법을 다룹니다. 초기에는 SKT의 KoGPT2를 사용하였지만 문제가 많아 네이버로 변경하였습니다. LangChain 실습 환경 구성 완벽 가이드실습 프로젝트 소개 GitHub 저장소프로젝트 링크: https://github.com/ironmanciti/LangChain_Streamlit GitHub - ironmanciti/LangChain_StreamlitContribute to ir..

LLM(Open AI) 2025.07.09

LangChain AI 서비스 모델 구축 프로젝트 - Kitri - LangChain 기초부터 실습까지(Vector, AI역사, 프롬프트, LCEL, LLM 모델 연동 등)

KITRI LangChain 교육 1일차 - LangChain 기초부터 실습까지KITRI에서 진행된 LangChain 교육 1일차 내용을 정리해보겠습니다. 이번 포스팅에서는 LangChain의 기본 개념부터 실제 코드 구현까지 차근차근 다뤄보겠습니다.1일차 학습 목표 AI 역사 벡터와 AI 모델의 문제 해결 원리LangChain 프레임워크 이해기본 구조와 구성 요소 파악Chain의 개념과 활용법 습득LLM API 연동 방법 학습Prompt Engineering 기초 실습AI 역사 요약1단계: AI의 탄생 (1943-1958)1943년: McCulloch과 Pitts가 최초의 인공신경망 이론 제시1958년: Frank Rosenblatt이 퍼셉트론 개발 - 현대 신경망의 시작점 2단계: 첫 번째 암흑기 (..

LLM(Open AI) 2025.07.09

2025년 1회 정보처리기사 실기 해설 초보 비전공자

1번. 네트워크 보안 - 세션 하이재킹 📝 문제( )은/는 '세션을 가로채다.' 라는 의미로 다른 사람의 세션 상태를 훔치거나 도용하여 액세스하는 해킹 기법이다. TCP ( )은/는 TCP의 3-way 핸드셰이크가 완료된 후에 공격자가 시퀀스 번호 등을 조작하여 정상적인 세션을 가로채고 인증 없이 통신을 탈취하는 공격이다. ✅ 정답: 세션 하이재킹 💡 초보자를 위한 상세 해설🔰 기본 개념 이해:세션(Session): 사용자가 웹사이트에 로그인한 상태를 유지하는 것하이재킹(Hijacking): 가로채기, 탈취하기 📚 세션 하이재킹이란?실생활 비유: 당신이 은행에서 업무를 보고 있는데, 악한 사람이 당신의 신분증을 몰래 복사해서 당신인 척 하며 은행 업무를 처리하는 것과 같습니다.디지털 세계에서:A씨..

문서가 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

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
반응형