DI(Dependency Injection)객체 간의 의존 관계를 외부에서 설정하고 주입해주는 프로그래밍 패턴으로, 객체가 자신이 의존하는 객체를 스스로 생성하거나 찾는 대신, 외부에서 필요한 의존성을 주입받아 사용한다. 이를 통해 객체 간 결합도를 낮추고 코드의 유연성과 테스트 가능성을 높일 수 있다. DI 컨테이너 의존성 주입을 효율적으로 관리하기 위한 도구(서비스). 객체를 생성하고, 객체 간의 의존 관계를 설정하며, 생명 주기를 관리한다. 내가 지금 프로젝트로 이용하고 있는 .NET에서는 주로 Microsoft.Extensions.DependencyInjection 라이브러리를 사용한다. 장점의존성 관리 용이: 객체 간의 의존 관계를 한 곳에서 관리할 수 있으므로, 코드 유지보수가 쉬워진다.테스..
개요요즘 토이 프로젝트를 진행 중인데, 게임을 만들기 전부터 분산서버로 만들자! 라는 목표가 있었기 때문에 로그인 서버, 로비 서버, 게임 서버를 각각 구축했다. 그런데 로그인 서버에서 로비 서버로의 연결은 순조로웠으나, 로비 서버에서 게임 서버로의 전환은 의문이 들었다. 게임 서버에서는 패킷의 송수신이 로비에 비해 훨씬 많을 거니까 조금 더 욕심을 부려서 로드밸런싱을 거쳐서 여러 게임 서버를 만들면 어떨까...? 하는 생각에... 따라서 로비 서버에서 Nginx를 이용해서 로드 밸런싱을 거친 후 게임 서버로 연결되도록 구현하려 했는데, 분산 서버를 구글링해보면 항상 따라다니는 AWS ECS(Elastic Container Service)가 눈에 밟혔다. 도대체 저건 뭔데 계속 뜨는거야... 그래서 이번..
서비스 레이어 패턴 (Service Layer Pattern)애플리케이션의 비즈니스 로직을 별도의 계층(서비스 레이어)으로 분리하는 디자인 패턴. 이는 책임 분리(Separation of Concerns) 원칙을 따르며, 유지보수성과 확장성을 크게 향상시킨다. 일반적으로 서비스 레이어는 데이터베이스 접근, 비즈니스 규칙, 데이터 변환 등을 포함한다. Service핵심 비즈니스 로직을 처리하는 역할을 수행한다. 핸들러에서 요청받은 데이터를 기반으로 필요한 작업을 수행하며, 데이터베이스 호출, 상태 변경, 검증, 로직 처리 등을 담당한다. Result 서비스 로직의 결과를 전달하는 객체로, 작업의 성공 여부, 에러 메시지, 처리된 데이터 등을 포함한다. 장점 코드의 가독성 향상핸들러는 비즈니스 로직과 분리되..
Fluent Validation유효성 검사 규칙을 작성하기 위해 인터페이스와 람다식을 사용하는 .NET용 유효성 검증 라이브러리.이전 Node.js에서 사용했던 JOI라이브러리와 비슷한 기능을 한다고 생각하면 된다! 시작하기dotnet add package FluentValidation더보기ASP.NET Core 통합인 경우dotnet add package FluentValidation.AspNetCore 실습using FluentValidation;using HolyShitServer.Src.Network.Packets;namespace HolyShitServer.Src.Utils.FluentValidation;public class RegisterRequestValidator : AbstractVal..