전체 글 163

[Architecture] 아키텍처 드라이버의 핵심 사항

아키텍처 드라이버시스템의 구조를 검토할 때 중요한 고려사항이 되는 요구사항제약, 품질 속성, 영향력 있는 기능 요구사항, 기타 영향을 미치는 요소 제약시스템의 개발부터 운영 환경 배포까지 전 과정에서 부과되는 특정 조건비즈니스적 제약 : 프로젝트의 예산, 일정 또는 운영 시 유지보수 및 관리에 대한 비용 등기술적 제약 : 사용해야 하는 프로그래밍 언어, 라이브러리, 프레임워크, 개발 환경 등 조건 품질 속성소프트웨어 품질을 측정 가능한 속성으로 정의한 것기능 적합성 : 기능의 성숙도, 정확도, 타당성수행 효율성 : 처리 응답 시간, 처리량, 시스템 리소스 크기 등 시스템의 성능을 나타내는 속성호환성 : 다른 시스템에 영향을 주지 않으면서 환경과 자원을 공유할 수 있는지(공존), 여러 시스템 간 연계가 ..

[Architecture] 아키텍처 설계의 개념

아키텍처의 정의아키텍처시스템이 처한 환경 속에서 시스템의 요소, 관계, 그리고 설계와 발전의 원칙에 따라 구체화된 시스템의 기본 개념과 특성 시스템은 특정 과제를 해결하고 사용자에게 가치를 제공하는 것을 목표로하고 이를 위해서 미리 갖춰야 할 특성을 구현하는 과정이 아키텍처이다. 즉, 소프트웨어를 어떻게 설계하고 앞으로 어떻게 발전시킬지를 결정하는 기본 원리와 원칙을 뜻한다. 설계 과정아키텍처로 달성해야 할 것시스템이 누구를 위해, 어떤 목적으로 만들어지는지 구체화비즈니스적 요구사항, 기능, 품질 속성 정의설계판단구현을 위해 아키텍처를 선정하는 과정. 선정에 이르게 된 판단 근거, 이유 기록비교 평가 매트릭스, 아키텍처 의사 결정 기록(ADR)시스템 구성도형성된 논리적 구조를 도식화개발 문서와 규약, 가..

Spring AI 란 (기본 개념 정리)

Spring AI는 Spring 생태계에서 LLM 과 생성형 AI 기능을 쉽게 통합할 수 있도록 만든 프로젝트이다.Spring Boot 기반 애플리케이션에서 GPT, Hugging Face, Vertex AI 같은 모델을 마치 기존의 JdbcTemplate이나 RestTemplate을 쓰듯히 자연스럽고 쉽게 활용할 수 있게 해준다. 목표와 철학Spring 개발자 친화적이다. 기존 스프링 방식(빈 주입, 설정, 프로퍼티 기반, 스타터 의존성 관리 등)에 맞춰져 있어 러닝커브가 낮다.OpenAI, Azure OpenAI, Hugging Face, Ollama, Vertex AI 등 다양한 백엔드 모델을 추상화 계층을 통해 통합Vector DB와 연동하여 RAG(Retrieval-Augmented Genera..

개발이론/AI 2025.08.27

[좋은글] 설레는 마음으로 마흔을 초대하는 사람

시간이 날 때마다 자신을 돌아보라.이런 성찰의 시간을 아깝게 생각하지 마라.마흔은 이룬 게 없는 게 정상이니주변의 모습에 흔들릴 필요가 없다.또한 좋은 습관은 기적이라는 선물을 주니 늘 유지하자. 자꾸 증명하려고 하지 않아도 된다.내 안에 있는 게 무엇인지 이미 다 알고 있으니,굳이 그것을 타인에게 보여줄 필요는 없다.마지막으로, 모두 다 내려놓으라는 세상의 말에 속지 말자.자존감과 품격은 마흔의 소중한 자산이다. 이전에는 그러지 않았던 것 같은데 어떻게 된 것인지 나이가 들수록 주변의 모습과 사람들의 시선, 평가에 더 신경쓰여지는 것 같다.그래서 더 힘들고 스스로를 갉아먹게 되는 듯 하다.남을 신경쓸 것이 아니라 자신을 살펴보도록 하자.그리고 조그마한 습관부터 하나 만들어 꾸준히 해나가도록 하자.나 자..

좋은글, 명언 2025.08.27

[Architecture] 소프트웨어 설계 원칙과 실천방법

SOLID 원칙로버트 C. 마틴이 2000년에 발표한 논문 에서 정리한 객체 지향 설계 원칙이다. 단일 책임 원칙 (SRP)클래스를 변경하는 이유는 단 하나뿐이어야 한다. 단일 책임 원칙은 클래스가 오직 하나의 명확한 역할을 가져야 한다는 원칙이다.만약 여러 역할을 맡으면 클래스가 비대해지고 비효율적인 코드가 될 가능성이 있다. 또한 의존하는 다른 클래스의 수도 늘어나 의존 관계가 복잡해질 수도 있다. 따라서 객체 지향 설계에서는 하나의 역할을 맡는 작고 독립적인 클래스로 나누는 것을 기본으로 한다.다만, 클래스의 역할을 정의할 때 중요한 것은 클래스를 사용하는 클라이언트(다른 클래스) 관점에서 요구되는 역할로 고려해야한다. 개발-폐쇄 원칙 (OCP)소프트웨어 구성 요소(클래스, 모듈, 함수 등) 확장에..

Redis Streams의 구조와 개념

Redis Streams는 Redis 5.0부터 도입된 데이터 타입으로, 로그처럼 append-only로 데이터를 추가해 나가는 구조이다.각 엔트리는 고유의 ID(타임스탬프 기반)와 key-value 쌍으로 이루어져 있다. 주요 특징과 개념Stream : 하나의 키에 여러 개의 메시지(레코드)가 쌓이는 큐 또는 로그 구조Entry(메시지) 구조 : 각 Entry는 ID와 데이터 field-value 쌍으로 저장된다.append only : 데이터는 순차적으로만 추가되고(삭제는 직접 명령) 기본적으로 메시지가 사라지지 않는다.Consumer / Consumer GroupRedis Streams는 Kafka와 유사하게 Producer, Consumer 모델을 지원한다.여러 Consumer가 하나의 Stre..

[Architecture] 소프트웨어 설계의 추상화 레벨

소프트웨어 설계에는 크게 네 가지 추상화 레벨이 존재한다.각 레벨마다 추상화 정도나 설계 범위가 달라지게 된다. 클래스 설계클래스 설계는 프로그램의 최소 단위가 되는 구성 요소를 설계하는 과정이다. 컴포넌트 설계컴포넌트 설계는 클래스 설계 보다 높은 추상화 레벨에서 컴포넌트의 구성 방식과 협력 방식을 결정하는 과정이다컴포넌트란특정 동작을 수행하는 책임을 가지며, 명확한 인터페이스로 정의된 소프트웨어의 구성 요소를 의미한다. 여러 클래스로 구성되기도 한다.여기서 OrderRepository라는 인터페이스를 구현한 OrderRepositoryImpl 클래스가 컴포넌트의 실체이다.하지만 이 클래스만으로 모든 처리를 수행하지 않고 일부 작업을 Helper 라는 다른 클래스들에게 위임하여 전체 작업을 완료하는데 ..

기분이 안 좋을 때는 - 아이유

그럴 때는...빨리 움직여야 해요집 안에라도 돌아다니고설거지라도 한다든지안 뜯었던 소포를 뜯는다든지우울한 기분이 들때그 기분에 진짜 속지 않으려고 노력해요이 기분 절대 영원하지 않고 5분 안에 내가 바꿀 수 있어몸을 움직여야 해요 진짜로! 기분이 안 좋을 때 우울한 상태에 빠져나오기 힘든 느낌이 든다는 점에 공감한다. 그런 상황에서 몸을 움직이면 다른 상황에 집중하게 되고, 우울함에서 벗어나는 데 도움이 된다는 깨달음을 얻었다. 또한, 평소에도 우울한 기분에 빠질 일이 적도록 일부러라도 몸을 움직일 수 있는 간단한 운동을 취미로 시작해보는 것도 괜찮을 것 같다는 생각이 들었다.

좋은글, 명언 2025.08.17

[Architecture] 소프트웨어 개발 프로세스

소프트웨어는 고객의 문제를 해결하는 등 고객의 요구를 충족시키기 위해 개발된다.소프트웨어 개발 프로세스는 구체화되지 않은 고객 요구사항에서 출발하여 단계를 거치면서 작동 가능한 코드로 변환하는 일련 활동을 의미한다. 요구사항 분석고객의 현재 업무에 대해 인터뷰를 진행하고 업무의 흐름과 규칙을 정리한 후 설계한다.사용자에게 제공해야할 기능은 유스케이스 모델로 정의한다.유스케이스 다이어그램유스케이스 기술서클래스 다이어그램이후 각 유스케이스를 구현하기 위해 필요한 기능을 정의한다.화면 단위, 업무 산출물, 외부 시스템 연동 등 설계요구사항 분석 단계에서 정한 요구사항 명세를 프로그래밍 언어, 프레임워크, 라이브러리를 사용하여 구현하는 방법을 구체적으로 계획한다.복잡한 대규모 시스템은 하나의 프로그램으로 처리..

[리뷰] 위버멘쉬 - 프리드리히 니체

이 책은 니체의 대표적인 개념인 '위버멘쉬'를 중심으로 우리가 어떻게 자기 자신을 극복하고 더 나은 삶을 살아갈 수 있을지 이야기 한다. 어려운 철학 내용이라기 보다는 짧고 직설적인 문장 구조로 읽기 어렵지 않다."자신만의 길을 찾아라", "고독과 시련을 두려워 말라" 등 일상에 바로 적용할 수 있는 조언이 많다.가볍게 읽으면서 삶에 작은 변화를 줄 수 있는 책으로 추천한다. 기록해두고 새겨두고 싶은 내용 몇 가지 정리해본다.타인의 기대가 아니라 내가 진심으로 믿고 만들어낸 기준을 따라 살아야 할 순간이다.......자신만의 방향을 찾고, 그 방향을 꿋꿋이 지켜낼 때, 우리는 비로소 진정한 자유를 얻는다.......인생은 주어진 길을 걸어가는 것이 아니다. 스스로 길을 만들어가는 여정이다. 인간은 본능적..

2025.07.13

AWS Parameter Store 개념, 가이드

Parameter Store란?AWS Parameter Store는 애플리케이션 설정과 비밀 정보를 안전하게 저장하고 관리할 수 있는 완전 관리형 서비스입니다. 하드코딩된 설정 값 대신 중앙에서 관리되는 매개변수를 런타임에 가져와 사용할 수 있습니다. 주요 특징계층적 구조/myapp/dev/database/host/myapp/prod/database/host데이터 타입String : 일반 텍스트StringList : 쉼표로 구분된 목록SecureString : KMS 암호화된 민감 정보핵심 장점KMS 암호화로 보안성 확보IAM을 통한 세밀한 권한 제어CloudFormation, Lambda 등과 완벽 통합 실사용 예제CLI로 매개변수 관리# 매개변수 생성aws ssm put-parameter \ -..

개발이론/AWS 2025.06.04

[리뷰] 어른의 행복은 조용하다 - 태수

최근에는 이런 에세이가 좋다.시간이 흐르고 나이를 들어감에 따라 고민거리는 꼬리에 꼬리를 물고 혼자 뒤쳐져가는 것 같아 마음은 급해지는 상황한 순간도 쉬지 않는 뇌, 우울감으로부터 잠깐이라도 휴식을 또는 마음의 위안을 찾고 싶은지도 모르겠다.마치 나의 마음을 이해하고 공감해주는 것 같고 괜찮다고 얘기해주는 것 같은 느낌인지도 모르겠다책을 읽으면서 또 한번 더 다짐한다. 남들과 비교하지말고 누군가에게 인정받으려고 하지말자. 쉬어가도 괜찮다. 나만의 속도로 아주 조금씩 나아가도 괜찮다고 읽으면서 기록해두고 싶었던 부분 나중에 다시 돌아보고 싶을 것 같다고 생각되는 부분 몇 가지 정리해 본다. 멈춤은 정지가 아닌 충전이라는 당연한 논리를 우린 자주 까먹는다. 맞다. 자주 까먹는다. 멈추면 큰일나는 줄 알았다...

2025.05.09

LLM RAG 시스템에서의 검색 유형과 방법

RAG(Retrieval-Augmented Generation) 시스템의 핵심은 효과적인 정보 검색이다. 검색 방식에 따라 결과물의 정확성과 유용성이 크게 달라질 수 있다. 키워드 기반 검색 (Keyword-based Retrieval)키워드 검색은 가장 전통적인 정보 검색 방식으로 질의에 포함된 단어나 구문과 정확히 일치하는 문서를 찾는 방법이다주요기법BM25(Best Match 25): TF-IDF의 발전된 형태로 단어 빈도와 역문서 빈도를 고려하면서도 문서 길이를 정규화하는 알고리즘TF-IDF(Term Frequency-Inverse Document Frequency): 단어의 중요도를 문서 내 빈도와 전체 문서 집합에서의 희소성을 바탕으로 계산정확 매칭(Exact Matching): 질의어와 정확..

개발이론/AI 2025.05.09

RAG 구현 시 효과적인 청킹(Chunking) 전략

텍스트 데이터를 효율적으로 활용하는 RAG(Retrieval-Augmented Generation) 시스템에서 청킹은 핵심적인 역할을 한다. 청킹은 대용량 문서를 처리 가능한 작은 단위로 분할하는 과정으로 RAG 시스템의 성능과 정확도에 직접적인 영향을 미친다. 청킹이란청킹은 긴 텍스트 문서를 의미적으로 일관된 작은 조각들로 나누는 과정이다. 이러한 과정은 RAG 파이프라인에서 문서를 벡터 데이터베이스에 저장하고 효과적으로 검색하기 위한 필수적인 전처리 단계이다. 청킹이 중요한 이유검색 정확도 향상: 적절한 크기와 의미적 일관성을 가진 청크는 사용자 쿼리와 관련된 정보를 정확히 검색할 확률을 높인다.컨텍스트 윈도우 최적화: LLM의 컨텍스트 윈도우는 제한되어 있어 필요한 정보만 포함된 최적화된 청크를 제..

개발이론/AI 2025.05.09

파인튜닝(Fine-tuning)의 이해와 활용법

파인튜닝이란?파인튜닝은 사전 학습된 모델(pre-trained model)을 새로운 작업이나 도메인에 적응시키기 위해 추가적인 학습을 진행하는 과정이다. 대규모 데이터셋으로 일반적인 지식을 학습한 모델에 특정 목적에 맞는 데이터로 추가 학습을 시켜 성능을 향상시키는 기법이다. 파인튜닝이 필요한 이유특화된 성능: 특정 도메인이나 작업에 대한 정확도를 향상시킨다자원 효율성: 처음부터 모델을 학습시키는 것보다 훤씬 적은 컴퓨팅 자원과 데이터가 필요하다빠른 적응: 새로운 분야에 빠르게 적응할 수 있다일관된 톤과 스타일: 특정 브랜드나 서비스의 일관된 톤과 스타일을 유지할 수 있다 파인튜닝의 주요 방법전체 파인튜닝 (Full Fine-tuning)모델의 모든 파라미터를 업데이트 하는 방식이다. 새로운 데이터로 모..

개발이론/AI 2025.05.07
반응형