tags / python
Validation 코드는 어디에 작성해야 할까? - The 3 types of validation logics
개발자들은 다양한 validation 코드들을 작성하는데 많은 시간을 소비한다. 이곳저곳에 덕지덕지 붙어있는 validation 코드들을 바라보면, 과연 이 코드들이 여기에 있어도 되는 것인지 의문이 생긴다. 다양한 종류의 validation 코드들을 어디에 작성해야 하는지 정리해보자.
Python으로 kubernetes 환경에 app 배포하기 - Kubernetes deployment with python
Kubectl 명령어를 통해 kubernetes 환경에 다양한 구성요소들을 배포할 수 있지만, python으로 템플릿 코드를 짜두면 개발자들도 편리하게 배포를 자동화할 수 있다. Jinja2와 kubernetes 패키지를 통해 사용자 요청에 따라 kubernetes 환경에 pod들을 띄우는 기능을 만들어보자.
Domain entity와 ORM을 따로 구분해서 정의하는 방법 - Domain entity with imperative ORM
Domain entity를 정의할 때 declarative 방식의 ORM을 사용하면 domain model에 DB 관련 정보가 노출되는 문제가 있다. Python sqlalchemy를 활용하여 imperative mapping style로 domain entity로부터 ORM을 분리해보자.
도메인 entity와 ORM을 동시에 추구하면 안 되는 걸까? - Domain entity with declarative ORM
ORM을 사용하는 환경에서 DDD를 따르는 코드를 작성하다보면, domain entity를 어떤식으로 정의해야 하는지 혼란스러울 때가 있다. Python sqlchemy를 통해 declarative mapping 방식으로 domain entity를 어떻게 구현하면 좋은지 알아보자.
영속성 domain entity를 정의할 때 상속을 사용해도 괜찮을까? - Repository code smell
객체지향 프로그래밍에서는 코드 중복 최소화 및 다형성을 위해 인터페이스나 추상 클래스를 정의하고 상속을 사용하는 경우가 많다. 그러나, 이는 도메인 주도 설계(DDD) 관점에서 항상 바람직한 것은 아니다. 영속성 domain entity를 정의할 때 상속을 사용하는 것이 적절한지, 그리고 어떤 것들을 고려해야 하는지에 대해 논의해보자.
자가 위임, 자가 캡슐화 - DDD에서 생성자를 정의하는 방법
DDD에서는 생성자를 정의할 때 자가 위임(self-delegation)과 자가 캡슐화(self-encapsulation)를 사용할 것을 권장한다. 이 두 가지 개념을 통해 어떻게 생성자를 정의해야 하는지 알아보자.
FastAPI에서 사용자가 연결을 끊으면 어떻게 될까? - Middleware disconnection check 문제
FastAPI에서 middleware를 사용하면 클라이언트가 연결을 끊었다는 사실을 알 수 없게 된다. 사용자의 disconnection이 요청 취소를 의미하는 경우, 이는 여러가지 문제로 이어질 수 있다. 연결이 끊겼다는 것을 어떻게 감지해야 할까?
FastAPI로 다양한 input을 받는 웹 서버 개발 방법 - Path parameter, query parameter, request body
Python의 FastAPI는 간단한 코드로 REST API를 빠르게 개발하도록 해준다. 복잡한 코드 없이 FastAPI로 path parameter, query parameter, JSON 타입의 request body 등 다양한 종류의 input을 받는 python backend 서버를 개발해보자.
Python의 enum으로 dynamic value 정의하기
Python의 enum은 일종의 alias라고 생각할 수 있다. 어떤 값을 미리 정의한 다른 이름으로 대체해서 참조할 수 있다. 이 별명과 값들은 enum을 정의하는 시점에 결정되고, 이후 값을 변경할 수 없는 "불변"의 속성을 가진다. 그렇다면 만약 enum에 정의된 다른 값들을 활용하여 동적으로 만들어야 하는 값이 있다면 어떻게 해야 할까?
Python으로 private 변수, getter와 setter를 만드는 방법은 없을까? - Python property decorator
Python으로 객체지향 프로그래밍을 하려고 하는가? Java같은 객체지향 언어를 학습하다보면 public, private 등의 접근제어자, 그리고 getter와 setter에 대해 자연스럽게 접하게 된다. Python에도 private같은 접근제어자 기능을 사용할 수 있다는 사실을 알고 있는가? Python에서 getter와 setter를 쉽게 만들 수 있는 built-in 기능에 대해 알아보자.