본문 바로가기

프로그래밍 언어21

FastAPI에 대해 가볍게 알아보자. 목차 LIST FastAPI 공식문서에는 FastAPI에 대한 설명이 아래와 같이 적혀있습니다. FastAPI는 현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.6+의 API를 빌드하기 위한 웹 프레임워크입니다. 현대적 : FastAPI는 최신 프로그래밍 기법을 사용하여 설계되었음 빠름 : 우수한 성능 파이썬 표준 타입 힌트에 기초 : Python 3.6 이상 버전에서 도입된 타입 힌트 기능을 활용 * 타입힌트 : 변수나 함수의 입력 및 반환 값의 타입을 명시하는 것 Python3.6 이상 버전을 사용하여 API를 개발하기 위한 도구이다. 즉, FastAPI는 최신 파이썬 기술을 활용하여 고성능의 API를 효율적으로 개발할 수 있게 해주는 현대적인 웹 프레임워크입니다. Fa.. 2023. 11. 24.
빈약한 도메인 모델(Anemic Domain Model) 목차 LIST 빈약한 도메인 모델이란? "빈약한 도메인 모델(Anemic Domain Model)" 소프트웨어 개발의 안티패턴 중 하나이다. 이 패턴에서 도메인 모델은 대부분의 로직 없이 단순한 데이터 구조로만 구성되며, 실제 비즈니스 로직은 서비스 계층에 위치하게 된다. 문제점 OOP(객체 지향 프로그래밍)의 이점 활용 못함: 객체는 상태와 행위를 가질 수 있는데, 빈약한 도메인 모델에서는 행위가 객체 외부에 있기 때문에 객체 지향의 특성과 장점을 제대로 활용할 수 없다. 코드 재사용의 어려움: 도메인 로직이 서비스 계층에 분산되어 있으면, 비슷한 로직이 여러 서비스에서 중복될 수 있다. 도메인 로직의 변경이 어려움: 서비스 계층에 비즈니스 로직이 집중되면, 로직의 변경이나 확장이 어려울 수 있다. 예.. 2023. 9. 10.
단위 테스트(Pytest, Mock)란 무엇인가? 목차 LIST 단위 테스트 단위 테스트는 보조 수단이 아닌 소프트웨어의 핵심이 되는 필수적인 기능으로 일반 비즈니스 로직과 동일한 수준으로 다뤄져야 함 단위 테스트는 비즈니스 로직이 특정 조건을 보장하는지 확인하기 위해 여러 시나리오를 검증하는 코드 특징 격리 :단위 테스트는 다른 외부 에이전트와 완전히 독립적/비즈니스 로직에만 집중해야 함. 데이터베이스 연결 X HTTP 요청 X 격리란 테스트 자체가 독립적이라는 걸 의미하며 이전 상태에 관계 없이 임의의 순서대로 실행될 수 있어야 함 성능 : 단위 테스트는 신속하게 실행되어야 하며 반복적으로 여러 번 실행될 수 있도록 설계해야 함 자체 검증 : 단위 테스트의 실행만으로 결과를 결정할 수 있어야 함. 단위 테스트를 처리하기 위한 추가 단계가 없어져야 함.. 2023. 9. 4.
Python - SQLAlchemy 간단 정리 목차 LIST SQLAlchemy Python에서 사용하는 ORM(Object-relational mapping)이다. ORM은 말 그대로 객체(Object)와 관계(Relation)를 연결하는 것으로 데이터베이스 테이블의 데이터를 Object 필드와 매핑한다. 참고) 의존성 역전의 예제로 SQLAlchemy가 사용된다. SQLAlchemy를 사용하면 스키마를 별도로 정의하고, 스키마와 도메인 모델을 상호 변환하는 명시적인 매퍼(mapper)를 정의한다. 이렇게 ORM 기능을 사용하면 데이터와 애플리케이션 로직 사이의 강한 의존성을 줄이고, 도메인 모델과 데이터베이스 스키마 사이의 매핑을 추상화하여 의존성 역전 원칙이 적용된다. 장점 객체 지향적인 코드로 비즈니스 로직에 집중할 수 있다. 재사용 및 유지.. 2023. 8. 22.
Python Thread는 블로킹I/O에 사용한다. GIL이란? 목차 LIST 핵심 파이썬 쓰레드는 전역 인터프리터 잠금(GIL : Global Interpreter Lock) 때문에 여러 CPU 코어에서 병렬로 바이트코드를 실행할 수 없음 GIL이 있지만 쓰레드는 여러 작업을 동시에 하는 것처럼 보여주기 쉬우므로 유용한 부분이 있다. 여러 시스템 콜을 병렬로 수행할 때 파이썬 쓰레드를 사용하자. 이렇게 하면 CPU 연산과 같은 계산 작업을 하는 동안에도 병렬로 I/O 작업을 수행할 수 있다. 쓰레드를 블로킹 I/O용으로 사용하고 병렬화용으로는 사용하지 말자 CPython은 파이썬 프로그램을 두 단계로 실행한다. 1) 소스코드를 바이트코드(byte code)로 파싱하고 컴파일한다. 2) 스택 기반 인터프리터로 바이트코드를 실행한다. 참고) CPython : 파이썬 코.. 2023. 8. 20.
Python subprocess 모듈 목차 LIST 들어가기 전에 Concurrency(병행성) : 컴퓨터가 여러 일을 동시에 하듯이 수행하는 것 예) CPU 코어가 하나인 컴퓨터에서 운영체제는 단일 프로세서에서 실행하는 프로그램을 교대로 빠르게 변경하여 프로그램들이 동시에 실행되는 것처럼 보이게 한다. Parallelism(병렬성) : 실제로 여러 작업을 동시에 실행하는 것 CPU 코어가 여러 개인 컴퓨터는 여러 프로그램을 동시에 실행할 수 있다. 각 CPU 코어가 각기 다른 프로그램의 명령어(instruction)를 실행하여 같은 순간에 여러 프로그램들이 실행될 수 있다. Concurrency 와 Parallelism은 속도 향상의 측면에서 가장 큰 차이점을 가진다. 한 프로그램에서 서로 다른 작업을 병렬로 진행하면 전체 작업에 걸리는.. 2023. 8. 20.
반응형