전체 글 315

[AWS] EC2 경보 생성 및 SQS 알림 받기 (재시동)

개요 문제 : EC2 인프라가 메모리 부족으로 웹서버 자체가 다운되는 현상 발생 EC2에 경보를 달고 일정 조건을 충족하면, 인프라 재부팅 및 웹서버 재실행을 통해 복구 하기로 함 EC2 경보 설정 1. EC2 인스턴스 경보상태 탭에서 경보 추가 2. 경보 생성 3. 경보 알림 이름 작성 4. 경보 작업 -> [재부팅, 종료, 시작 등] 5. 경보 임계값 - CPU 사용율 / 상태 검사 실패 둘중 하나 / 네트워크 바이트 량 등등 - 임계값 80% 설정 - 경보 이름, 경보 설명 작성 6. 기존 서버의 평균 그래프 확인 - 임계값 설정이 애매하면, 그래프를 통해 확인도 가능 7. 셋팅 완료 EC2 SNS설정 AWS SNS 서비스 1. 주제 생성 2. 유형 및 이름 설정 (FIFO -> Amazone SQ..

AWS/AWS 일반 2024.04.21

[Django Ninja] 배포용 도커파일 (Dockerfile)

Dockerfile 기본적으로 Multi-Builder 사용 (builder-image / runtime-image) 만약 linux 에서 제공하는 도구(vi 등)를 쓰고 싶다면 설치 후 runtime-image 에 복사 해야 함 프로젝트명 : mysite / 실행 log는 ./access.log 에 기록배포는 uvicorn에 gunicorn을 worker로 사용하여 실행 (worker 갯수는 cpu 코어 갯수 * 2)로컬에 배포 하고 싶다면 ${SERVER_IP} 를 수정 (ex. 127.0.0.1 / 0.0.0.0 )#################### Server Build ####################FROM python:3.11-slim AS builder-imageRUN apt-get ..

Python/Django Ninja 2024.04.21

[좋은 API 설계하기] API 응답 시 모든 상태코드 200 고정

배경 API 설계시 일부 기업이나 방법론 중 모든 상태 코드를 200으로 처리하는 방법이 종종 거론되곤 한다. 관련 링크 : https://okky.kr/questions/661303 (카더라긴 하지만 댓글에 기타 정보 내용이 있음) 일반적으로 응답 코드는 요청에 대한 상태를 나타내는 HTTP 상태 코드(Status code)와, 에러에 대한 정보를 담은 세부 에러 코드(Error code)로 나뉘며 일반적인 처리는 상태 코드별로 > 세부 에러 코드를 나누는 것이 일반적이다. 위에 말한 방법은 상태 코드를 통일하고 > 세부 에러 코드로 통합 하는 것 이다. 모든 상태코드를 200으로 고정하여 처리 하는 경우 주된 목적 : HTTP Status Code가 노출 될 시 보안에 위험이 있을 수 있음 (ex...

[Utils] 파이썬 반올림 구현 (ft. 사사오입, round 함수 )

반올림 종류 파이썬 round() 반올림 함수는 기본적으로 오사오입의 방식을 따른다. 반올림 종류 사사오입 (Rounding half up) : 4 이하 버림, 5 이상 올림 오사오입 (Rounding half to even) : 5 미만 버림, 5 초과 올림 / 5는 앞자리가 홀수인 경우 올림, 짝수인 경우 버림 => 수를 짝수로 만들어 주는 방식 ex) 35 -> 40 / 25 -> 20 / python의 round() 함수 오사육입 (Rounding half down) : 5 이하 버림, 5 초과 올림 관련 링크 반올림 위키 : https://ko.wikipedia.org/wiki/%EB%B0%98%EC%98%AC%EB%A6%BC python3 round() 함수 링크 : https://docs...

Python/Utils 2024.04.21

[기타] 슬랙 커스텀 앱 봇 만들기

셋팅 방법1. 슬랙 워크 스페이스의 앱에 대한 기본 Key 및 옵션 설정다음 링크 참조 2. 최종 Key 획득다음 key들은 프로젝트 내 환경변수로 관리SIGNING SECRET : ... hashSLACK_BOT_TOKEN : xoxb- ... SLACK_APP_TOKEN(=Socket Token) : xapp-... 3. 로컬 프로젝트 생성슬랙 API 에서 공식 지원하는 - Bolt Python 으로 작성 [링크]슬랙 API 사용 중 필요 권한은 1. 에서 계속 추가 설정코드 배포 4. 슬랙 채널에 앱 추가만든 커스텀 앱을 채널에 등록한다. 5. 트러블 슈팅설치할 봇 사용자가 없습니다. : 앱 명을 자꾸 바꾸다가 발생하였었음 추가슬랙에는 Custom 앱 을 만드는 방법 외에, 주어진 extension..

[디자인패턴] 생성 패턴 - Prototype 패턴

생성 (Creational) 패턴 다양한 상황에서의 객체의 생성 방식을 결정하는 디자인 패턴 주요 패턴으론 다음 사항들이 있다.팩토리 메서드 (Factory Method)추상 팩토리 (Abstract Factory)빌더(Builder)싱글톤(SingleTon)프로토타입(Prototype)  템플릿메서드(TemplateMethod) 프로토 타입 패턴 이란? 생성 패턴의 한 방법으로, 객체를 생성할 때 클래스를 이용하여 새로운 객체를 생성하는 것이 아닌, 기본 템플릿(이미 존재하는 객체)을 복제하여 생성하는 디자인 패턴주로 객체를 생성하는데 비용이 큰데, 이를 빈번하게 생성해야 하는 경우 주로 사용됨사실 Python에서는 이미 deepcopy() 로 대체가능함. 왜 사용하는가?만약 똑같은 A1 객체, A2 ..

[디자인패턴] 생성 패턴 - 싱글톤 (Singleton) 패턴

생성 (Creational) 패턴다양한 상황에서의 객체의 생성 방식을 결정하는 디자인 패턴 주요 패턴으론 다음 사항들이 있다.팩토리 메서드 (Factory Method)추상 팩토리 (Abstract Factory)빌더(Builder)싱글톤(SingleTon) 프로토타입(Prototype)  템플릿메서드(TemplateMethod) 싱글톤 패턴 이란?싱글톤 패턴(Singleton Pattern) 이란 클래스에 하나의 객체(인스턴스)로 모든 인스턴스와 공유하는 패턴싱글턴 객체는 맨 처음 요청될 때만 초기화를 진행되며, 해당 인스턴스에 대해 전역 접근 지점이 존재함  객체 생성과 초기화객체의 생성과 초기화에는 __new__와 __init__ 이라는 메서드가 사용 __new__ : 객체의 생성 과정시 호출__i..

[디자인패턴] 생성 패턴 - 빌더 (Builder) 패턴

생성 (Creational) 패턴다양한 상황에서의 객체의 생성 방식을 결정하는 디자인 패턴 주요 패턴으론 다음 사항들이 있다.팩토리 메서드 (Factory Method)추상 팩토리 (Abstract Factory)빌더(Builder) 싱글톤(SingleTon) 프로토타입(Prototype)  템플릿메서드(TemplateMethod) 빌더 패턴 이란? 생성 패턴의 한 방법으로, 복잡한 객체를 단계별로 생성할 수 있도록 하는 디자인 패턴같은 생성(construction) 코드를 사용하여 다양한 타입과 상태의 객체를 만들 수 있다.아래 사진 처럼 다양한 종류의 House를 만들기 쉬움Directory 개념을 추가해, 빌더 단계들에 대한 일련의 호출 순서를 정의 가능  인터페이스 구조 집의 벽, 문, 지붕, 창..

[디자인패턴] 생성 패턴 - 팩토리 (Factory) 패턴

생성 (Creational) 패턴다양한 상황에서의 객체의 생성 방식을 결정하는 디자인 패턴 주요 패턴으론 다음 사항들이 있다.팩토리 메서드 (Factory Method) 추상 팩토리 (Abstract Factory) 빌더(Builder) 싱글톤(SingleTon) 프로토타입(Prototype)  템플릿메서드(TemplateMethod) 팩토리 패턴 이란? 생성 패턴의 한 방법으로, 여러 객체들을 팩토리로 캡슐화를 통해 다양한 종류의 객체들을 생성 구현 하는 것팩토리(추상) 클래스에 각 객체를 생성 해주는 로직들을 캡슐화 하고 Argument 호출 등을 통해, 가독성을 높인다.팩토리 패턴은 조건에 해당되는 '생성된 객체'를 리턴해 주는 것이 핵심주로 클래스의 생성자의 로직이 복잡해졌을 때 추상화 레벨로 올..