전체 글(120)
-
1장. 계층형 아키텍처의 문제는 무엇일까?
소개 만들면서 배우는 클린 아키텍처 책을 읽고 정리하며 소감을 적는 포스트입니다. 계층형 아키텍처의 문제점 웹 계층, 도메인 계층, 영속성 계층으로 구성된 전통적인 웹 애플리케이션 구조 계층형 아키텍처는 맨 위의 웹 계층에서 요청을 받아 도메인 계층에 있는 서비스로 요청을 보낸다. 서비스에서는 필요한 비즈니스 로직을 수행하고, 도메인 엔티티의 현재 상태를 조회하거나 변경하기 위해 영속성 계층의 컴포넌트를 호출한다. 계층을 잘 이해하고 구성한다면 다른 계층에 영향을 주지 않고 독립적으로 관리가 가능하다. 하지만 계층형 아키텍처는 코드에 나쁜 습관들이 스며들기 쉽게 만들고 시간이 지날 수록 소프트웨어를 점점 더 변경하기 어렵게 만드는 수많은 허점들을 노출한다. 데이터베이스 주도 설계를 유도한다. 전통적인 계..
2023.04.27 -
Rust 설치 및 VS Code 셋팅(Linux, Debian)
소개 최근 Rust에 관심이 생겨 Rust를 공부하고 있습니다. 제가 집에서 사용하는 PC는 Mint Linux로 Debian 계열의 리눅스를 사용하고 있습니다. Linux에 Rust를 설치하는 방법과 VS Code에서 Rust를 사용하는 방법에 대해 정리하겠습니다. Rust 설치 리눅스에서 Rust를 설치하는 방법은 3가지가 있습니다. rustup 사용 : 공식 사이트에서 가장 추천하는 방법 입니다. 패키지 매니저 사용 : 편리하지만 오래 된 버전의 Rust가 설치 됩니다. 직접 소스코드 빌드 : 특이한 경우가 아니라면 비추입니다. 저는 이 중 가장 추천하는 rustup을 사용하여 설치하겠습니다. Rustup으로 설치하기 먼저 터미널을 실행 시킵니다.(Ctrl + Alt + T) 아래 명령어를 사용합니..
2023.04.26 -
.NET Serilog 사용법
Serilog https://serilog.net/ 아래의 예제는 .NET Worker Service 프로젝트에서 사용하는 방법에 대해 소개하도록 하겠습니다. Serilog란? 파일, 콘솔 등의 다양한 저장소의 로깅을 지원합니다. 그리고 설정하기 쉬운 API로 되어 있으며 다양한 플랫폼에 이식이 가능합니다. 또한 구조화 된 로깅으로 다른 플랫폼에서 읽기 쉽도록 로깅을 생성할 수 있습니다. 사용법 Worker Service를 먼저 생성합니다. 그리고 Nuget Package에서 Serilog.AspNetCore를 설치합니다. Program.cs에 아래와 같이 코드를 추가합니다. using Collector.Service; using Serilog; IHost host = Host.CreateDefaultB..
2023.04.26 -
PostgreSQL Docker DB 초기화
소개 요즘은 간단한 프로젝트나 테스트를 하기 위해 Docker를 사용하여 Database를 띄우는 경우가 많습니다. 그럴때 마다 백업 된 데이터를 다시 넣어주거나 데이터를 일일이 다시 넣어주는 일은 매우 귀찮은 일입니다. Database를 가장 맨 처음 딱 한번만 데이터를 넣고 싶을 때 사용하는 방법에 대해 알아보도록 하겠습니다. Init Data 준비 CREATE TABLE USERS( index SERIAL PRIMARY KEY, id VARCHAR NOT NULL, name VARCHAR NOT NULL, email VARCHAR NOT NULL ); INSERT INTO USERS(index, id, name, email) VALUES(DEFAULT, 'hgsp', '박혁거세', 'ysp@goog..
2023.04.25 -
Stream, FileStream, BufferedStream, MemoryStream
Stream이란? 프로그램을 개발하다보면 Stream을 사용하는 일이 많습니다. Java와 .NET 에서는 입풀력 작업을 Stream이란 개념을 통해서 추상화하여 사용합니다. 대표적으로 파일을 읽고 쓸 때 많이 사용하는데, 자세히 알아보도록 하겠습니다. 먼저 사전적인 의미를 보자면 아래와 같습니다. A stream is a small narrow river. A stream of smoke, air, or liquid is a narrow moving mass of it. A stream of vehicles or people is a long moving line of them. (액체 등의) 좁은 흐름 우리 말로하면 작은 시냇물 같은 의미를 가지고 있습니다. 즉, 프로그램에서 Stream이란 데이터가..
2023.04.25 -
Docker Container Exit Code
소개 이번 포스팅에서는 Docker Container의 Exit Code에 대해 알아봅니다. Docker를 사용하다보면 예기치 않게 Container가 내려가거나 내려가 있어도 무슨 원인으로 내려갔는지 모를 경우가 많습니다. 이때 Exit Code를 확인하여 원인을 알아 볼 수 있습니다. Docker 종료 된 Container 목록 확인 > docker ps -a --filter "status=exited" docker ps -a로 모든 컨테이너 목록을 가져오고 --filter 옵션으로 exited 된 컨테이너 목록만 가져 올 수 있습니다. Exit Code 종류 Exited (0) 0 코드는 가장 일반적인 경우로, 컨테이너 내부의 init process가 자신의 역할을 끝낸 후 정상적으로 종료 되었을 ..
2023.04.24