2024/12 5

[DB] Postgresql 과 MySQL schema 구분 차이

Schema 란 스키마(schema)는 데이터베이스 내에서 객체(테이블, 뷰, 함수, 인덱스 등)를 논리적으로 구분 한 컨테이너이다. 하나의 데이터베이스 안에 여러 스키마를 포함하며, 스키마를 활용해  여러 namespace 공간을 제공하고, 각각의 공간에서는 동일한 이름의 객체를 가질 수 있다. public과 service1이 다른 schema라는 가정하에 다음과 같이 정의 할 수 있다.ex) public.user_table / service1.user_table Mysql mysql 에서 스키마(Schema)는 Database와 동일한 의미로 사용된다.즉, MySQL의 스키마(Schema)는 데이터베이스(Database) 하나 자체를 지칭하며,필요시 다른 데이터베이스(Database)를 활용하여 논리..

DB/이론 2024.12.21

[공유] 좋은 개발 글 모음

코드 리뷰코드 리뷰에 관한 생각 정리 : 코드 리뷰에 대한 가치관 및 좋은 견해 개발자, 커리어주니어/중니어/시니어의 역할 정리 : 주니어, 중니어  의 역할을 비교해보며 나는 어디쯤 속해있나 돌아보기 좋은 글. Tech 관련 PythonPython과 FastAPI로 지속 성장 가능한 웹서비스 개발하기Fastapi 콜 한줄한줄 따라가기CPython 3.13버전에서 기대되는 기능(A Per-Interpreter GIL)Python @Dataclass 이해하기파이썬과 인터페이스: 프로토콜에서 ABC까지메타 프로그래밍이란? 설계 / 배포uvicorn 에 대한 이해로그 서비스 설계 및 이해 무중단 배포 (Blue/Green)gRPC vs Websocket 차이 이해해보기 DBPostgresql 의 Schema ..

[시스템 장애] Cron 작업 과부하에 따른 서버 장애 발생

상황서버 CPU나 메모리가 일정 임계선을 넘어 서, 서비스에 장애가 생기는 경우 복구를 위해 서비스 재부팅 + 알림 메일이 오게 설정해두었는데, 3일 연속 자정에 서버가 임계선을 넘어가 재부팅 되었다는 알림 경보 메일을 받게 되어, 3일차에 문제 해결에 들어가게 되었다.(처음 1일 때는 일시적인 현상으로 지켜보면서 모니터링 만 하다가, 2~3일 때 반복적인 발생하는 이슈로 보았음) 문제 파악다른 시간대에는 문제가 없고, 자정에만 문제가 생기는 것으로 보아, 자정에 실행되는 이벤트 들에 문제가 있다고 생각하여 해당 크론들을 파악하게 되었다.(아래 AWS 지표를 볼 때, AWS는 기본 5분 단위로 평균을 집계(옵션 및 추가 비용을 내면 1분마다 집계 가능) 하여 그래프로 나타내준다. 23시 55분 ~ 00시..

[리팩토링] (3) early-return 적용하기

배경 복잡한 if-else  중첩 구조에 대한 수정  과정👉 리팩토링 전 - api.py 의 함수에 다음과 같은 조건문이 적혀있었고, 유지보수와 이해(가독성)에 매우 어려움이 존재# 리팩 전if a: if b: if c: return '성공' else: raise ApiError(에러c) else: raise ApiError(에러b)else: raise ApiError(에러a) 👉 리팩토링 후- 부정 문으로 상위 조건인 경우 return(raise)를 진행함 . early-return 을 통해 가독성 개선# 리팩 후if not a: raise ApiError(에러a)if not b: raise ApiError(에러b)if n..

[requests] 라이브러리 Timeout 에러 분류

Timeout 에러 timeout 에러 발생시, 다양한 이유에서 Timeout 504 에러가 발생 할 수 있다. ConnectTimeOut 연결 수립 과정(Connection TimeOut) 에서의 에러해당 서버로 아예 연결 수립 과정에서 막히는 경우timeout=0.0001 : 0.0001 초 안에 연결 수립 되어야 한다고 가정import requestsfrom requests.exceptions import ReadTimeout, ConnectTimeout############## Error - ConnectTimeout 에러! ##############url = "https://alden-kang.tistory.com/20"try: # 의도적으로 매우 짧은 타임아웃으로 연결 수립 조차 못하게 ..

Python/Advanced 2024.12.20