에러 메시지는 다음과 같습니다. 원격 서버에서 MySQL 서버로 단순 커넥션한 뒤 close 하게 되면 MySQL은 비정상적인 접속으로 판단하여 해당 IP를 블락킹하게 됩니다. 이때 MySQL의 비정상적인 접속 요청 수를 카운트하게 되는데 global max_conne
백엔드 작업을 하다보면 개발 환경, 스테이지 환경, 운영 환경이 있고 여러 보안 그룹이 존재하기 마련입니다. 회사에서는 비교적 최근 컨테이너 기반 배포를 도입했지만 그전 까지는 인스턴스 별로 관리를 했었던 것 같습니다. 유지 보수할 일이 있어 살펴보니 AI 서버, 셀러
업로드중.. SQLAlchemy를 사용하다가 Integer 타입과 INTEGER 타입이 있는 것을 발견하게 되었습니다. 이 두개의 차이는 뭐가 있을 까 검색하다 흥미로운 글을 찾게 되어 정리하게 되었습니다. 우선 자주 사용하는 Column 클래스의 생성자에 sqla
최근에 관심받고 있는 NestJS 와 같은 자바 스크립트 프레임워크에서는 의존성 주입과 같은 부분이 프레임워크 수준에서 제공을 해주고 있다. Flask 나 FastAPI에서는 프레임워크 측면에서 제공해주고 있지는 않아 공부해보기로 생각하고, 파이썬 내에 여러 의존성 관
주로 uwsgi를 보통 이용하는데 gunicorn을 한 번 공부할겸 정리하게 되었습니다. gunicorn을 실행하기 위해서는 wsgi 모듈과 매핑할 필요가 있습니다.$(MODULE_NAME):$(VARIABLE_NAME) 와 같이 설정할 수 있습니다. django의 경
사용자의 다양한 요구 사항을 고려하여 데이터베이스를 생성하는 과정 요구 사항 -> 개념적 설계 -> 논리적 설계 -> 물리적 설계 -> 구현설계 과정 -> 오류 발견 -> 변경 필요 -> 이전 단계 설계 내용 변경 가능 사용자의 요구 사항을 수집 분석하여 개발할 데이터
웹 백엔드 개발 진행 순서 정리 (Python 개발, Docker 배포 가정)DB 섥계 데이터 요구 사항 확인 개념적 설계: 개체간 관계 파악 및 ER 다이어그램 작성DBMS 선택논리적 설계: 데이터 모델링 물리적 설계: ORM 테스트 API 명세 작성 RESTful
여러 코드를 보던 중에 SQLAlchemy를 사용하더라도 스타일이 다른 것을 보게되었다. 어떤 코드에서는 session.query를 어떤 코드에서는 직접적으로 select, update, delete를 session.execute를 통해 query를 진행하는 경우가 있
Flask나 FastAPI를 이용하면서 SQLAlchemy를 주로 이용하고 있고 db를 정의할 때 정확하게 알고 사용하고 있지 않는다는 생각이 들어 찾아보기로 하였습니다다. pool_size와 같은 인자를 넘겨주고는 하는데 이를 검색하다 커넥션 풀에 대해서 알게되었고,
내장 ORM이 있는 Django와 다르게 Flask와 FastAPI는 SQLAlchemy 라는 ORM 라이브러리를 이용합니다. ORM은 이전 포스트에서도 얘기를 했어서 짧게 간략하자면 Object Relation Mapping의 약자로 객체를 이용해서 데이터베이스 En
CKA를 준비하면서 강의를 듣고 준비를 했었는데 환경 문제로 떨어지고 나서 다시 준비하면서 정리할 겸 글을 남기고자 합니다. 1. 쿠버네티스란 쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션의 자동 배포, 자동 스케일링 등을 제공하는 오픈소스 기반 관
업로드중..최근 ml 모델 서빙에 관한 관심이 늘어나면서 가볍고 빠른 프레임워크인 FastAPI가 관심받기 시작하였다. 회사에서는 flask를 사용해서 어떤 차이가 있는지 궁금하였고, 차이점을 공부하다가 wsgi 와 asgi에 대해 알게 되어 자세히 알아볼 겸 글을 남
지난 시간에서 NGINX가 리버스 프록시 서버로 사용될 수 있다는 내용을 알게되었다. 그렇다면 리버스 프록시는 무엇이고 다른 종류의 프록시는 어떤 것이 있을 지 찾아보고 공부하기로 하였다. 프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속
NGINX는 경량 웹 서버입니다. 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 하고, Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 합니다.
unittest는 python에 내장되어 있는 표준 라이브러리 입니다. 그래서 바로 import 하여 사용하는 것이 가능합니다. pytest는 설치하고 import 하여 사용합니다.파일명: test로 시작Unittest에서는 지정된 파일은 반드시 모듈로 import 가
파이썬에서 제너레이터(generator)를 만드는 데 이용하는 yield 키워드에 대해 알아보겠습니다. 대부분의 프로그래밍 언어에서는 일반적으로 어떤 결과 값을 return 키워드를 이용하여 반환합니다. 하지만 파이썬에서는 yield 키워드를 이용하여 다소 다른 방법으
파이썬은 PEP8 (Python Enhancement Proposal) 이라는 코드 스타일 가이드 가 있습니다. 들어가면 매우 많은 양의 문서가 있습니다. 기초적인 공백, 들여쓰기, 문법 등을 어떻게 하면 좋을 지 상세하게 작성되어 있습니다. 변수와 클래스 이름은 가독
속도: Starlette과 Pydantic으로 인해 NodeJS 및 Go 에 대등할 정도로 성능이 매우 높음. 빠른 코드 작성: 200~300%까지 기능 개발 속도 증가쉬움: 쉽게 사용하고 배우도록 설계되어 있음.짧음: 코드 중복 최소화. 적은 버그. 직관적: 훌륭한
IN은 조건에 만족하는 row를 찾는 것이고 EXISTS는 EXISTS이하 절이 true인지 아닌지를 체크합니다. 둘의 차이점은 Null 값을 처리하는 부분에서 발생합니다. NOT IN은 Null 값이 WHERE 절의 조건을 만족하더라도 결과에서 제외됩니다. NOT E
테이블에 여러 데이터들이 무작위로 섞여 있으면 조회하는데 시간이 오래 걸린다. 이 때 검색 알고리즘을 사용하는 인덱스를 이용하면 검색 속도를 향상시킬 수 있다. 1) 인덱스 테이블 생성 인덱스 테이블을 생성하는 명렁어의 기본 구조는 CREATE INDEX 인덱스테이블명