본문 바로가기

전체 글

(182)
결제 기능 구현 개요주문 배달 관리 시스템에서 주문/결제 부분을 개발하게 되었고 주문에 대한 결제를 어떤 식으로 구현할 지에 대해 고민해 보았다. 1. 주문이 생성되면 해당 주문의 정보를 토대로 결제 정보를 만들고 저장한다.고객의 주문이 들어오면 해당 주문을 가지고 Payment(결제 정보)를 구현하고 DB에 저장했다.Payment에는 주문 식별값(order_id), UUID(외부로 노출할 Unique 컬럼), 결제 비용(amount), 결제 상태(대기, 완료, 취소, 실패), 결제 종류(카드, 외부 결제 등)이 저장된다.2. 결제 상태를 활용하기.초기 API 명세서를 만들 때 결제 관련 API는 하나로 만들고 주문 부분부터 개발을 시작했다.결제 상태(대기, 완료, 취소, 실패)에는 여러 가지가 있는데 주문 API가 하..
PostgreSQL 기초 개요프로젝트에서 평소 사용하던 MySQL 대신 PostgreSQL을 DB로 사용하도록 요구 사항이 있었기 때문에 PostgreSQL에 대한 간단한 사용법을 배우기로 했다. PostgreSQL?객체-관계형 데이터베이스 시스템(ORDBMS)으로 다른 RDBMS와는 다르게 비관계형 및 관계형 데이터 유형을 모두 지원한다. POSTGRES는 1970년대 초에 시작된 오픈 소스 SQL 관계형 데이터베이스 프로젝트인 INGRES의 후속으로 1986년에 처음 개발되어 1994년 SQL에 대한 지원을 추가한 후 PostgreSQL이 탄생했다. 기능 및 제한RDBMS가 제공하는 기본적 기능인 트랜잭션과 ACID(Atomicity, Consistency, Isolation, Durability) 외에도 많은 기능을 지원하..
아키텍처(Architecture) 개요프로젝트를 구성함에 있어 아키텍처는 필수 요소이며 개발에는 다양한 아키텍처가 활용된다.이번 팀 프로젝트를 진행함에 있어 기존에 사용하던 모놀리식 아키텍처가 아닌 유사 헥사고날 아키텍처 구조를 사용해 프로젝트를 구성하게 되어 적응에 어려움을 겪었고, 왜 이런 어려운 구조를 사용해야 하는지 간단하게 배워보려고 한다. Architecture 란?영어 단어로 '건축학'이라는 뜻으로 내용을 풀어서 살펴보면 다음과 같다.시스템 구성 및 동작 원리를 나타내는 것구성 요소 간의 관계 및 시스템 외부 환경과의 관계를 묘사하는 것시스템 구성 요소에 대한 설계 및 구현을 지원하는 수준을 기술하는 것요구 사양 및 시스템 수명 주기를 고려하는 것시스템의 전체적인 최적화를 목표로 하는 것 좋지 않은 디자인을 가진 소프트웨어는..
데이터베이스 PK 타입 및 페이지네이션 관련 의사 결정 개요팀 프로젝트로 음식 주문관리 애플리케이션을 개발하게 되었고, 설계 조건에 따라 DB를 설계하던 중 PK와 관련된 문제를 직면하게 되었고 팀원과 의사결정을 하게 되었다. 데이터베이스 PK 타입 의사 결정프로젝트 DB 설계 조건테이블 명명 규칙: 모든 테이블에 p_ 접두사 사용UUID 사용: 모든 주요 엔티티의 식별자는 UUID를 사용 (유저는 예외)Audit 필드: 모든 테이블에 created_at, created_by, updated_at, updated_by, deleted_at, deleted_by 필드를 추가하여 데이터 감사 로그 기록ERD 설계: 엔티티 간의 관계를 명확히 하는 ERD(Entity-Relationship Diagram) 작성 초기 DB 설계(ERD)설계 초기에는 p_user 테..
Spring - Image Resize 학습 목적토이 프로젝트로 Pixiv 사이트의 기능을 만들어 보고 싶어서 이미지 업로드와 리사이즈를 통한 썸네일화에 대해 배워보려고 한다. 이미지 리사이징하는 이유? 페이지 로딩 속도 개선: 큰 이미지 파일은 로딩 시간이 길어질 수 있습니다. 이미지를 리사이즈하면 파일 크기가 줄어들어 웹 페이지의 로딩 속도가 빨라집니다. 빠른 로딩 시간은 사용자 경험을 개선하고, 검색 엔진 최적화(SEO)에도 긍정적인 영향을 미칩니다.대역폭 절약: 리사이즈된 이미지는 파일 크기가 작아져 서버와 사용자 양측에서 사용되는 데이터 대역폭을 절약할 수 있습니다. 이는 특히 모바일 데이터 요금이 중요한 상황이나 대역폭이 제한된 환경에서 유용합니다.적절한 해상도유지: 디바이스별로 최적의 해상도를 유지하기 위해 이미지를 리사이즈할 수..
자바 - 탐색 알고리즘, 그래프 알고리즘 탐색 알고리즘(Search Algorithms)자바에서 사용되는 대표적인 탐색 알고리즘에는 선형 탐색(Linear Search)과 이진 탐색(Binary Search)이 있습니다.두 알고리즘은 데이터 구조나 문제의 특성에 따라 각각의 장단점을 가지며, 적절히 사용해야 최적의 성능을 발휘할 수 있습니다. 선형 탐색(Linear Search)특징:배열이나 리스트에 있는 모든 요소를 처음부터 끝까지 순차적으로 탐색합니다.탐색 대상이 없는 경우, 리스트의 끝까지 탐색을 계속합니다.정렬되지 않은 데이터에도 사용할 수 있습니다.시간 복잡도:최악의 경우: O(n) (탐색해야 하는 리스트의 모든 요소를 검사해야 하기 때문)장점:구현이 간단하고, 데이터가 정렬되어 있을 필요가 없습니다.데이터의 크기나 구조에 구애받지 않..
WebHook WebHook(웹훅)WebHook(웹훅)이란 데이터가 변경되었을 때 실시간으로 알림을 받을 수 있는 기능으로 웹 서비스의 이벤트 데이터를 전달하는 HTTP 기반 콜백 함수이다. 특정 이벤트가 발생하면 웹훅이 클라이언트에게 이벤트 데이터를 보냄, 웹훅이라는 단어는 HTTP 기반의 웹 특징과 훅(Hook) 기능을 합친 용어이다. WebHook의 주요 특징이벤트 기반:WebHook은 이벤트가 발생할 때만 작동한다.예를 들어, 사용자가 새로운 글을 작성하거나 주문이 완료되는 등의 이벤트가 발생하면 WebHook이 설정된  URL로 요청을 보낸다.HTTP 요청:WebHook은 HTTP POST 요청을 통해 데이터를 전달한다. 이 요청은 JSON, XML 등의 형식으로 데이터를 포함할 수 있다.실시간 통신:WebH..
Java - Nested, Inner Class 참조 - 김영한 자바 중급 1편 강의 중첩 클래스, 내부 클래스(Nested Class, Inner Class)아래 예시 코드처럼 클래스 안에 클래스를 중첩해서 정의할 수 있는데, 이를 중첩 클래스(Nested Class)라 한다.class Outer { ... // 중첩 클래스 class Nested { ... }} 중첩 클래스는 클래스를 정의하는 위치에 따라 다음과 같이 분류한다. 중첩 클래스는 총 4가지가 있고, 크게 2가지로 분류할 수 있다.정적 중첩 클래스내부 클래스 종류내부 클래스지역 클래스익명 클래스중첩 클래스를 정의하는 위치는 변수의 선언 위치와 같다. 변수의 선언 위치정적 변수(클래스 변수)인스턴스 변수지역 변수중첩 클래스의 선언 위치정적 중첩 클래스 → 정적 변수..