본문 바로가기

개인공부121

Web API 서버 예시 Main DB(MySQL)과 Redis를 사용하며, 간단한 로그인 기능정도가 구현되어있는 Web API 서버를 구현 기본 구성은 다음과 같음 Program.cs 프로그램의 진입점(entry point) 역할 using APIServer.Services; using ZLogger; var builder = WebApplication.CreateBuilder(args); builder.Services.AddTransient(); builder.Services.AddSingleton(); builder.Services.AddControllers(); builder.Logging.ClearProviders(); builder.Logging.AddZLoggerConsole(); var app = builder.B.. 2023. 4. 24.
배경지식 - Web 서버 구조 Web 서버 기본 구조 가장 간단한 구조 서버가 죽을시 데이터 소멸, 서비스 중지 요청이 늘어날 경우 Scale up(서버의 스펙 상승) 또는 Scale out(서버의 대수 증가) 방법을 사용하여 처리 능력을 향상시킬 수 있음 서버 Scale out 서버를 단순히 Scale out하여 대수를 늘린 경우 특정 서버에 부하가 집중될 수 있음 각 서버마다 가지고있는 데이터가 다름 가용성, 정합성 문제를 해결하지 못함 Load Balancer, DB 추가 로드 밸런서를 추가해 서버에 가해지는 트래픽을 여러대의 서버에 균등하게 분산 모든 서버가 동일하게 공유하는 데이터베이스에서 데이터를 관리하므로 데이터의 일관성이 유지됨 DB를 통해 데이터를 더 효율적으로 관리할 수 있으며, 보안 / 백업 등에도 이점이 생김 L.. 2023. 4. 23.
배경지식 - ZLogger ZLogger .NET Core에서 사용 가능한 로깅 라이브러리로, Z는 Zero Allocation을 뜻함 NuGet을 통해 다운로드 가능 위 그림과 같이 .Net Core의 기본 Logger는 object를 boxing하고 string을 UTF8로 인코딩하는데 추가적인 비용이 발생함 반면 ZLogger의 경우 zero allocation string 빌더인 ZString을 사용하여 버퍼영역에 직접 UTF8로 작성함 로그 문자열을 콘솔에 출력하기 위한 ConsoleStream에 한번에 보내기 때문에 Boxing이 발생하지 않음 비동기적으로 작동하기 때문에 애플리케이션에 부하를 주지 않음 ConsoleLogging 외에도 FileLogger, RollingFileLogger, StreamLogger를 제.. 2023. 4. 20.
배경지식 - Redis Redis Remote Dictionary Storage의 약자로 모든 데이터를 메모리에 저장하고 조회하는 인메모리 데이터 저장소 오픈 소스로 개발되었으며 메모리 기반 key-value 구조를 가지는 데이터베이스 관리 시스템 string / bitmap / hash / list / set / sorted set 등 다양한 자료구조를 지원하기 때문에 데이터를 간단하게 저장 / 조회 / 수정할 수 있음 메모리에 데이터를 저장하기 때문에 매우 빠른 Read/Write 속도를 가짐 Master-slave 구조로 여러 노드에 데이터를 분산하여 저장하고, 클러스터링을 지원함으로써 높은 가용성과 확장성을 제공 필요에 따라 디스크에 데이터를 저장하여 영속화시킬 수 있음 레디스는 정기적으로 Snapshot을 저장하여 데.. 2023. 4. 20.