Domain을 사용하는 이유
·
Backend & Infra/Web
Domain을 사용하는 이유백엔드 개발을 공부하다 보면 이런 의문이 한 번쯤은 생깁니다."Service에서 모든 비즈니스 로직을 처리하면 되는데, 왜 Domain을 따로 만드는 걸까요?"처음에는 Domain도 DTO처럼 데이터를 담는 객체라고 생각하기 쉽습니다.하지만 Domain을 사용하는 가장 큰 이유는 비즈니스 규칙을 한 곳에서 관리하여 여러 Service에서 일관되게 사용할 수 있도록 하기 위해서입니다.이번 글에서는 Domain이 왜 필요한지 예제를 통해 알아보겠습니다.Service에 모든 비즈니스 로직을 작성하면 어떤 문제가 발생할까요?예를 들어 주문을 취소하는 기능이 있다고 가정해 보겠습니다.일반 사용자도 주문을 취소할 수 있고, 관리자도 주문을 취소할 수 있습니다.그러면 Service에는 다음..
Entity, Domain, DTO의 차이
·
Backend & Infra/Web
Web을 공부하다 보면 Entity, Domain, DTO라는 용어를 자주 접하게 됩니다.처음에는 모두 데이터를 담는 객체처럼 보여"도대체 뭐가 다른 거지?"라는 의문이 생기곤 합니다.사실 이 세 가지는 역할(Role) 이 완전히 다릅니다.왜 객체를 나눌까?회원가입 API를 만든다고 가정해보겠습니다.클라이언트는 다음과 같은 JSON을 서버에 보냅니다.{ "name": "홍길동", "password": "1234"}이 데이터를데이터베이스에 저장하고비즈니스 규칙을 수행하고다시 클라이언트에게 응답해야 합니다.객체 하나만 사용해도 동작은 합니다.하지만 하나의 객체가데이터베이스API비즈니스모두를 담당하게 되면 유지보수가 어려워집니다.그래서 역할에 따라 객체를 분리합니다.전체 구조Client │Re..
VSCode에서 Codex, Copilot DB MCP 연결하는 방법
·
Artificial Intelligence/Study
코파일럿이 비싸지면서 VSCode에서 Codex를 사용하기 시작했습니다. 근데 코파일럿 토큰 값이 비싸지면서 Codex랑 병렬로 처리를 하기 시작을 했는데요!! 근데 여기는 MCP 셋팅이 없어서 추가 해보는 작업을 해보겠습니다. Codex MCP[mcp_servers.db]command = "uvx"args = [ "--from", "mcp-alchemy==2025.8.15.91819", "--with", "pymssql", "--refresh-package", "mcp-alchemy", "mcp-alchemy"]type = "stdio"[mcp_servers.db.env]DB_URL = "mssql+pymssql://:@:/"코덱스의 경우 위 코드를 복사하셔서 config.toml에 넣으시..
데이터베이스 스캐폴딩(Database Scaffolding)의 메커니즘과 멀티 프레임워크 적용 전략
·
Backend & Infra/DB
소프트웨어 엔지니어링에서 애플리케이션 엔티티 모델과 관계형 데이터베이스(RDB) 스키마 간의 데이터 동기화는 시스템 무결성을 유지하기 위한 핵심 과제입니다. 특히 데이터베이스 스키마가 먼저 정립되어 있거나 기존 시스템의 레거시 DB를 유지한 채 백엔드 아키텍처를 개편하는 Database-First(데이터베이스 중심) 환경에서는 두 레이어 간의 매핑을 자동화하는 기술이 필수적입니다. 이러한 전사적 리버스 엔지니어링(Reverse Engineering) 프로세스를 수행하는 핵심 메커니즘이 바로 데이터베이스 스캐폴딩(Database Scaffolding)입니다. 본 글에서는 각 생태계별 공식 기술 문서(Official Documentation)에 명시된 작동 원리와 제약 요소를 파악하고, 다각적인 아키텍처적 ..
데이터베이스 마이그레이션과 저장 프로시저(Stored Procedure) 중심 설계의 구조적 비교
·
Backend & Infra/DB
데이터베이스 관리 방식은 저장 프로시저 중심의 아키텍처에서 코드 기반의 데이터베이스 마이그레이션 및 ORM(Object-Relational Mapping) 아키텍처로 전환되어 왔습니다. 이 두 가지 접근 방식의 차이점을 코드와 동작 원리를 통해 설명합니다. 1. 전통적 방식: 저장 프로시저 중심 구조저장 프로시저는 데이터베이스 시스템 내부에 컴파일되어 저장된 SQL 쿼리의 집합입니다. 데이터베이스 스키마 구조와 데이터 조작 로직(비즈니스 로직)이 데이터베이스 내부에 결합되어 있습니다.저장 프로시저 코드 예시 (사용자 등급 업데이트)CREATE PROCEDURE sp_UpdateUserGrade @UserId INT, @TotalPurchaseAmount DECIMAL(18,2)ASBEGIN ..
엔티티 프레임워크(Entity Framework)란?
·
Backend & Infra/DB
소프트웨어 개발의 역사에서 객체 지향 프로그래밍(OOP)과 관계형 데이터베이스(RDBMS)는 각자의 영역에서 눈부신 발전을 이루어왔습니다. 그러나 이 두 가지 패러다임을 함께 사용할 때, 개발자들은 필연적으로 '객체-관계 임피던스 불일치(Object-Relational Impedance Mismatch)'라는 근본적인 문제에 직면하게 됩니다. 객체 지향 언어는 상속, 다형성, 참조를 통해 데이터를 표현하는 반면, 관계형 데이터베이스는 테이블, 행, 외래 키를 통해 데이터를 저장하기 때문입니다. 이러한 간극을 메우기 위해 등장한 기술이 바로 객체 관계 매핑(ORM, Object-Relational Mapping)이며, 마이크로소프트의 .NET 생태계에서 이 ORM을 구현한 가장 대표적이고 강력한 프레임워크..
VirusTotal 바이러스 검사 사이트
·
Etc
https://www.virustotal.com/gui/home/upload VirusTotal www.virustotal.com 여기서 파일, URL 등 넣으시면 바이러스를 검사해보실 수 있습니다. 1. 사이트의 주요 목적악성코드 및 바이러스 검사: 컴퓨터에 다운로드한 파일이나 이메일 첨부파일, 또는 접속하려는 웹사이트 링크(URL)가 안전한지 검사해 주는 곳입니다.질문하신 해당 링크는 내 PC나 스마트폰에 있는 의심스러운 파일을 업로드하여 검사하는 페이지입니다.2. 어떻게 검사하나요?안랩(V3), 알약, 카스퍼스키, 마이크로소프트, 맥아피 등 전 세계 70여 개 이상의 유명 백신 엔진을 동시에 사용하여 업로드된 파일이나 링크를 분석합니다.하나의 백신만 사용할 때보다 훨씬 빠르고 정확하게 악성코드 여부..
윈도우에서 매직트랙패드 배터리 잔량 확인 하는 방법
·
Etc
https://www.bluetoothgoodies.com/battery-monitor/download/ Downloading Bluetooth Battery MonitorThank you for downloading Bluetooth Battery Monitor If your download does not begin, please click here to retry. Version: 2.23.2 for x64 Windows 10/11 (Please see version history for the officially supported Windows versions)www.bluetoothgoodies.com이렇게 뜨는데 설치 해주시면 됩니다. 배터리 확인이 커널 영역에서 돌아가는 거라서 윈도우에서 스..
[Architecture] 챗봇 시스템 구축 간의 기술적 고찰: 오버엔지니어링을 경계하는 설계
·
Tools & Setup/Study
최근 AI 기술의 발전과 더불어 LLM 및 VectorDB를 결합한 챗봇 아키텍처가 하나의 업계 표준처럼 자리 잡고 있다. 그러나 특정 기술 스택의 유행을 맹목적으로 추종하는 것은 필연적으로 시스템의 복잡도를 높이고 유지보수 비용을 증가시키는 오버엔지니어링을 초래한다. 본 글에서는 최근 챗봇 시스템을 직접 설계하고 구현하는 과정에서 경험한 기술적 의사결정의 이면과, 시스템의 본질적인 요구사항에 맞추어 아키텍처를 최적화한 과정에 대해 심도 있게 분석한다. 1. 생성형 LLM 기반 추론에서 VectorDB 기반 의미론적 검색으로의 전환문제 인식: 초기 아키텍처는 사용자의 질의를 VectorDB에서 검색하여 문맥을 찾은 뒤, 이를 LLM에 프롬프트로 주입하여 최종 답변을 생성하는 일반적인 RAG패턴을 고려했다..
[GIT] GitHub로 개인 홈페이지 만들기!
·
Backend & Infra/GitHub
오늘은 GitHub에서 개인 홈페이지를 만드는 방법에 대해 알아보도록 하겠습니다!복잡하지않으므로 쉽게 만드실 수 있습니다. 진행 repository는 늘 만드시는 것처럼 만드시면 됩니다. 단 무료버전은 Public으로 소스 코드는 공개하는 조건으로 만드실 수 있습니다.(유료버전으로 쓰시면 Private로 설정하셔도 상관없습니다) 그럼 이렇게 저장소가 하나 생기게 됩니다 여기서 Settings로 들어가주시면 됩니다. 그 다음에 Pages에 들어가셔서 Branch를 기본값이 None으로 되어있으실텐데여기서 main으로 수정해주시면 페이지를 1~2분 내로 보실 수 있습니다!https://newkimjiwon.github.io/random-cipher-web/ 랜덤 비밀번호 생성기 | Random Passwor..
[WEB] SPA, CSR, SSR 아키텍쳐이란?
·
Backend & Infra/Web
과거의 웹은 단순히 정보를 보여주는 문서에 불과했으나, 현대의 웹은 애플리케이션 수준의 복잡한 상호작용을 요구합니다. 이에 따라 SPA, CSR, SSR과 같은 개념이 등장했고, 개발자는 프로젝트의 목적(SEO, 퍼포먼스, UX)에 따라 최적의 렌더링 방식을 설계할 수 있어야 합니다. 1. SPA (Single Page Application)SPA는 말 그대로 '단 하나의 페이지로 구성된 애플리케이션'을 의미합니다. 전통적인 웹 페이지(MPA: Multi-Page Application)가 페이지 이동 시마다 서버로부터 새로운 HTML을 받아와 화면 전체를 다시 로드하는 것과 대조적입니다.동작 원리 및 특징SPA는 최초 접속 시 웹 애플리케이션 구동에 필요한 HTML, CSS, JavaScript 리소스를..
[WEB] MVC, MVP, MVVM 디자인 패턴이란?
·
Backend & Infra/Web
1. 디자인 패턴의 도입 배경초기 웹 개발 환경에서는 하나의 파일에 데이터베이스 접속 코드와 HTML 마크업, 비즈니스 로직이 혼재되어 있었습니다. 이는 프로젝트 규모가 커질수록 코드의 수정과 디버깅을 어렵게 만들었습니다. 이를 해결하기 위해 등장한 것이 '관심사의 분리(Separation of Concerns)' 개념이며, 이를 실체화한 것이 바로 디자인 패턴입니다. 2. MVC (Model-View-Controller)MVC 패턴은 가장 오래되고 널리 알려진 아키텍처입니다.Model: 데이터와 비즈니스 로직을 담당합니다. 데이터베이스의 상태를 관리합니다.View: 사용자에게 보여지는 화면(UI)을 담당합니다.Controller: 사용자의 입력을 받아 Model을 조작하고, 그 결과를 바탕으로 View..
김치바보
김치는 바보다.