데이터 모델과 SQL트랜잭션이란?데이터베이스의 논리적인 연산 단위 혹은 논리적인 업무단위.ex. 쇼핑몰은 고객이 주문을 하면 주문정보를 저장한다. 하나의 주문정보에는 여러 상품이 있어서 주문상세정보로 저장을 한다. 주문 - 트랜잭션주문 정보 저장주문 상세 정보 저장주문 완료! 이를 ERD로 표현해보면, 다음과 같은 결과를 얻을 수 있다. 주문 상세에서는 무조건 주문 정보가 필요하므로 O는 제거해준다.트랜잭션을 ERD를 보고 이해할 수 있느냐가 KEY-POINT! 식별관계 VS 비식별관계식별자관계 : 외래키(빌려온 키-FK)가 PK(식별자)의 일부분인가? - 강한연결관계비식별자관계 : 외래키(빌려온 키-FK)가 PK(식별자)의 일부분이 아닌가? - 약한연결관계IE표기법에서는 식별자관계를 실선, 비식별자관계..
데이터 모델과 SQL정규화란?데이터에 대한 중복을 제거하고 데이터가 관심사별로 처리되도록 엔터티를 나눠서 성능을 향상 시키는 활동. (단, 정규화가 대체적으로 좋은 것이며 경우에 따라서는 반정규화가 더 이득일 수도 있다.)더보기정규화시 입력/삭제/수정(DML)은 성능 향상! 조회는 성능 향상 혹은 저하 될 수 있다! 함수적 종속이란? F(X) = Y정규화를 하기 위해 알아야 하는 개념으로, 어떤 기준 값(컬럼)에 의해 데이터가 종속되는 현상을 의미한다.더보기예시. 결정자(아이디) -> 종속자(이름, 나이, 연봉, 부서, 부서명) : 아이디가 나머지 모든 컬럼을 함수종속한다. 예시. 결정자(부서) -> 종속자(부서명) : 부서가 부서명 컬럼을 함수종속한다. 정규화 과정 상세히 알아보기?차 정규화를 거쳐 ?..
DI(Dependency Injection)객체 간의 의존 관계를 외부에서 설정하고 주입해주는 프로그래밍 패턴으로, 객체가 자신이 의존하는 객체를 스스로 생성하거나 찾는 대신, 외부에서 필요한 의존성을 주입받아 사용한다. 이를 통해 객체 간 결합도를 낮추고 코드의 유연성과 테스트 가능성을 높일 수 있다. DI 컨테이너 의존성 주입을 효율적으로 관리하기 위한 도구(서비스). 객체를 생성하고, 객체 간의 의존 관계를 설정하며, 생명 주기를 관리한다. 내가 지금 프로젝트로 이용하고 있는 .NET에서는 주로 Microsoft.Extensions.DependencyInjection 라이브러리를 사용한다. 장점의존성 관리 용이: 객체 간의 의존 관계를 한 곳에서 관리할 수 있으므로, 코드 유지보수가 쉬워진다.테스..
개요요즘 토이 프로젝트를 진행 중인데, 게임을 만들기 전부터 분산서버로 만들자! 라는 목표가 있었기 때문에 로그인 서버, 로비 서버, 게임 서버를 각각 구축했다. 그런데 로그인 서버에서 로비 서버로의 연결은 순조로웠으나, 로비 서버에서 게임 서버로의 전환은 의문이 들었다. 게임 서버에서는 패킷의 송수신이 로비에 비해 훨씬 많을 거니까 조금 더 욕심을 부려서 로드밸런싱을 거쳐서 여러 게임 서버를 만들면 어떨까...? 하는 생각에... 따라서 로비 서버에서 Nginx를 이용해서 로드 밸런싱을 거친 후 게임 서버로 연결되도록 구현하려 했는데, 분산 서버를 구글링해보면 항상 따라다니는 AWS ECS(Elastic Container Service)가 눈에 밟혔다. 도대체 저건 뭔데 계속 뜨는거야... 그래서 이번..
서비스 레이어 패턴 (Service Layer Pattern)애플리케이션의 비즈니스 로직을 별도의 계층(서비스 레이어)으로 분리하는 디자인 패턴. 이는 책임 분리(Separation of Concerns) 원칙을 따르며, 유지보수성과 확장성을 크게 향상시킨다. 일반적으로 서비스 레이어는 데이터베이스 접근, 비즈니스 규칙, 데이터 변환 등을 포함한다. Service핵심 비즈니스 로직을 처리하는 역할을 수행한다. 핸들러에서 요청받은 데이터를 기반으로 필요한 작업을 수행하며, 데이터베이스 호출, 상태 변경, 검증, 로직 처리 등을 담당한다. Result 서비스 로직의 결과를 전달하는 객체로, 작업의 성공 여부, 에러 메시지, 처리된 데이터 등을 포함한다. 장점 코드의 가독성 향상핸들러는 비즈니스 로직과 분리되..
캐싱(Cache)?애플리케이션 성능을 개선하기 위한 핵심 기술로, 자주 사용되거나 최근에 사용된 데이터를 저장해두었다가 재사용하는 기술. 자주 사용되는 데이터를 빠르게 액세스할 수 있는 저장소(메모리, 디스크 등)에 저장하여 읽기 속도를 높이고 시스템 부하를 줄인다. 데이터베이스, API 호출, 파일 시스템, 계산 결과 등 느리거나 비용이 큰 작업의 결과를 캐싱하면 성능이 크게 향상된다. 주요 장점 속도 향상: 데이터를 메모리 등 빠른 저장소에서 바로 제공해 작업을 빠르게 처리.시스템 부하 감소: 데이터베이스나 외부 API 호출 빈도를 줄여 자원 사용량 감소.비용 절감: 네트워크 대역폭 및 서버 자원 사용량 감소. 작동 순서일반적으로 캐싱은 1. 조회 요청(클라이언트의 데이터 요청) → 2. 캐시 확인(..