2025/08 9

[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] 소프트웨어 개발 프로세스

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

반응형