UMC/study 8

[UMC_study] Web API 디자인 모범 사례

https://learn.microsoft.com/ko-kr/azure/architecture/best-practices/api-design Web API 디자인 모범 사례 - Azure Architecture Center서비스 진화를 위한 플랫폼 독립성과 느슨한 결합을 지원하는 RESTful 웹 API를 디자인하기 위한 모범 사례를 적용하는 방법을 알아봅니다.learn.microsoft.com 다음 글을 읽고 내용을 요약해봤습니다. RESTful 웹 API 디자인 핵심 요약1. RESTful API의 기본 개념자원(Resource) 중심 설계: 모든 것을 명사 형태의 자원(URI)으로 표현합니다. (/create-order (X) -> /orders (O))균일한 인터페이스(Uniform Interfa..

UMC/study 2025.10.05

[UMC_study] 컨트롤 URI이란?

컨트롤 URI이란? 컨트롤 URI(Control Uniform Resource Identifier)는 웹 페이지의 주소(URL)처럼 정해진 형식을 사용하여 애플리케이션의 특정 기능이나 UI(사용자 인터페이스) 요소를 제어하기 위한 내부적인 주소 체계입니다. 일반적인 웹 URI가 인터넷상의 리소스(웹 페이지, 이미지 등)를 가져오기 위해 사용된다면, 컨트롤 URI는 애플리케이션 내부에 약속된 명령을 전달하는 '리모컨'과 같은 역할을 합니다. 주로 앱 내부의 화면 이동(Navigation), 특정 기능 실행, 데이터 전달 등을 위해 사용되며, 커스텀 URI 스킴(Custom URI Scheme)을 기반으로 동작하는 경우가 많습니다. 컨트롤 URI의 구조 컨트롤 URI는 일반 URI와 유사한 구조를 가..

UMC/study 2025.10.05

[UMC_study] Soft Delete 란?

Soft Delete 란? Soft Delete(소프트 삭제)는 데이터를 데이터베이스에서 실제로 영구적으로 지우는 대신, 삭제된 것처럼 표시하는 디자인 패턴입니다. 사용자는 데이터가 삭제된 것으로 보지만, 실제 데이터는 데이터베이스에 그대로 남아있어 언제든지 복구할 수 있다는 장점이 있습니다. 보통 is_deleted, deleted_at과 같은 특정 칼럼(플래그)을 두어 데이터의 삭제 여부를 구분합니다. 예를 들어, deleted_at 칼럼에 삭제된 시점의 타임스탬프가 기록되어 있다면, 애플리케이션에서는 이 데이터가 삭제된 것으로 간주하고 사용자에게 보여주지 않습니다. Soft Delete에 적합한 HTTP MethodSoft Delete를 구현할 때 어떤 HTTP Method를 사용해야 하는지..

UMC/study 2025.10.05

[UMC_study] AOP(Aspect-Oriented Programming) 원리 탐구

1. AOP의 본질 및 필요성 (AOP Essence and Necessity) 항목설명필요성 (문제 해결)AOP 정의횡단 관심사(Cross-cutting Concerns, CCC)를 모듈화하고 캡슐화할 수 있도록 지원하는 프로그래밍 패러다임. OOP의 모듈화 한계를 보완하여 유지보수성과 코드 청결성을 극대화. CCC (횡단 관심사)핵심 비즈니스 로직과 직접적인 관련이 없으나, 시스템 전반에 걸쳐 반복적으로 필요한 기능 (예: 로깅, 보안, 트랜잭션 관리). OOP 환경에서 코드 산재(Scattering) 및 **코드 얽힘(Tangling)**을 유발하여 모듈성을 저해. 2. OOP와 AOP의 관계 및 관점 분리 AOP는 OOP를 대체하는 것이 아니라 보완하는 구조적 사고방..

UMC/study 2025.09.28

[UMC_study] 서블릿 vs Spring MVC 비교

1. 핵심 비교: 저수준 Servlet vs. 프레임워크 Spring MVC 구분전통적인 서블릿 (Servlet)Spring MVC 프레임워크기반Servlet API를 직접 사용하는 저수준(Low-level) 기술 Servlet API 기반의 요청 중심(Request-driven) 프레임워크 개발 난이도HTTP 요청 처리 및 고급 기능을 직접 구현해야 하므로 복잡함 프레임워크가 복잡성을 추상화하여 개발자가 비즈니스 로직에 집중 가능 Front Controller없음 (서블릿 컨테이너가 요청을 특정 서블릿으로 직접 매핑)DispatcherServlet이 중앙 집중식 Front Controller 역할을 수행 설정web.xml 파일을 사용하여 서블릿 매핑을 명시적으로 설정해야 함..

UMC/study 2025.09.28

[UMC_study] 버튼을 연타하는 걸 막아라!

버튼을 빠르게 여러 번 눌렀을 때 여러 가지 이유(비동기 로직 등)로 요청이 지연되어 완전히 처리하기 전 두 번 요청이 들어갈 수 있습니다. 이를 해결할 수 있는 방법에 대해 작성하여 주세요. 유저의 손가락을... 어떤 방법이 있는지 알아보자! ## 1. 프론트엔드 (클라이언트 측) 해결 방안: 사용자의 액션 제어가장 먼저 사용자에게 피드백을 주고 추가적인 입력을 막는 방법입니다.방법: 버튼 비활성화 및 로딩 상태 표시사용자가 "미션 도전!" 버튼을 한 번 클릭하면, 즉시 버튼을 비활성화(disabled) 처리하고 로딩 스피너와 같은 시각적 피드백을 보여줍니다. 그리고 서버로부터 성공 또는 실패 응답을 받은 후에야 버튼을 다시 활성화하거나 다른 상태(예: '도전 중')로 변경합니다. JavaScri..

UMC/study 2025.09.21

[UMC_study] 함수 기반 인덱스와 복합 인덱스

함수 기반 인덱스와 복합 인덱스: 성능 최적화를 위한 완전 가이드개요데이터베이스 성능 최적화에서 인덱스는 핵심적인 역할을 합니다. 특히 **함수 기반 인덱스(Function-Based Index)**와 **복합 인덱스(Composite Index)**는 복잡한 쿼리의 성능을 크게 향상시킬 수 있는 강력한 도구입니다. 이 글에서는 두 인덱스 유형의 특성, 장단점, 그리고 실제 적용 사례를 상세히 분석해보겠습니다.함수 기반 인덱스(Function-Based Index)정의 및 특징함수 기반 인덱스는 컬럼의 원본 값이 아닌 함수나 표현식의 결과에 대해 생성되는 인덱스입니다. 이는 WHERE 절에서 함수를 사용하는 쿼리의 성능을 대폭 향상시킬 수 있습니다.주요 특징:표현식 기반의 인덱싱으로 복잡한 계산 결과를 ..

UMC/study 2025.09.21

[UMC_study] 트렌젝션의 상태와 전파에 대하여

데이터베이스 트랜잭션 상태 및 전파 모델에 대한 종합적 분석I. 서론: 트랜잭션의 본질과 ACID 원칙트랜잭션 정의: 논리적 작업 단위데이터베이스 시스템의 맥락에서 트랜잭션(Transaction)은 단순히 여러 SQL 문의 집합이 아니라, 하나의 비즈니스 로직을 수행하기 위한 '논리적 작업 단위(Logical Unit of Work)'로 정의됩니다. 이러한 관점은 데이터베이스의 기계적 동작에서 비즈니스 무결성 보장이라는 더 높은 차원으로 초점을 이동시키기 때문에 매우 중요합니다. 예를 들어, 은행 계좌 이체는 출금(UPDATE)과 입금(UPDATE)이라는 두 개 이상의 물리적 데이터베이스 변경 작업을 포함하지만, 비즈니스 관점에서는 분리할 수 없는 단일 논리적 연산입니다. 트랜잭션의 핵심적인 약속은..

UMC/study 2025.09.21