전체 글
-
[Django] MiddlewareDjango 2024. 2. 2. 09:25
HTTP 요청 / 응답 처리 중간에서 작동하는 시스템 HTTP 요청이 들어오면 미들웨어를 거쳐서 해당 URL에 등록되어 있는 뷰로 연결해주고, HTTP 역시 미들웨어를 거쳐서 내보낸다 Django에서 미들웨어는 http 요청 또는 응답 전처리에 사용된다 Setting.py에서 MIDDLEWARE의 full python path를 추가하면 된다 Django-admin startproject 명령어로 django project 생성 시 기본적으로 미들웨어들이 등록되어 있다 미들웨어 등록시 가장 중요한 것은 미들웨어를 등록하는 순서다. 미들웨어 등록 순서가 가지는 의미 HTTP request가 들어오면 위에서부터 아래로 미들웨어를 적용 HTTP response가 나갈 때 아래서부터 위로 미들웨어를 적용 Cus..
-
[Django] Django ThrottlingDjango 2024. 2. 2. 09:12
특정 조건 하에 최대 호출 횟수를 결정하는 클래스 Request가 승인되어야 하는지 여부를 결정하는 점에서 permissions와 유사 Setting.py를 통해 전역으로 설정 가능 AnonRateThrottle 인증요청에는 제한을 두지 않고 비인증 요청에는 IP별로 횟수 제한 Throttle 클래스 별로 scope 1개만 지정 가능 Default : anon UserRateThrottle 인증요청에는 유저별로 횟수를 제한하고, 비인증 요청에는 IP별로 횟수 제한 Throttle 클래스 별로 scope 1개만 지정 가능 Default : user ScoptedRateThrottle ScoptedRateThrottle 인증요청에는 유저별로 횟수 제한, 비인증 요청에는 IP별로 횟수 제한 API view 내..
-
-
1. Kafka 도입 사례Kafka 2024. 1. 19. 20:52
Event-Driven System의 핵심 - Inbound Data와 Outbound Data가 일치해야 함 Event-Driven System을 구축하는 프레임워크 중 하나인 Kafka를 사용하는 목적은 받은 데이터를 잘 전달하는 데에 있다. 그러므로 데이터 전달 시 추가적인 변형이나 손실이 없게끔 Data가 잘 전달되어야만 한다. Event-Driven System의 초기 도입 사례는 Kafka가 아닌 API와 PostgreSQL로 연결하는 CRUD 타입으로 구성하고, DB 업데이트 이후 아웃바운드 이벤트가 생성되도록 구성된 것이다. 이 같은 경우 다양한 문제가 발생한다. 더보기 - 여러 네트워크를 이용하는 환경에서 모든 데이터 변경에 대한 올바른 전달 보장 문제 - 동일 데이터를 동시에 수정하면서..
-
CBD 방법론Data Engineer 2024. 1. 11. 07:20
재사용성, 대체성 재사용성 : 컴포넌트가 독립적인 기능 혹은 서비스를 제공하는 독립적인 모듈이므로 이를 필요로 하는 여러 애플리케이션에서 반복적으로 재사용되도록 하는 것을 의미 개발하고자 하는 시스템에서 필요로 하는 기능 및 서비스를 제공하는 컴포넌트를 식별하고 이를 정의하는 것이 핵심 기존 개발 방식과는 달리 특정 프레임워크 상에서 실행되는 부품화된 컴포넌트를 바탕으로 이를 조립하여 더 큰 컴포넌트를 만들거나 애플리케이션을 개발하는 새로운 기법 분석 - 설계 - 구현 - 테스트 및 인도 컴포넌트 자체를 생산하거나 테스트 완료된 컴포넌트를 조립하여 사용자 요구에 맞는 소프트웨어를 만드는 방법 1. 복잡한 개발 문제를 적당한 구현 단위로 분해하고, 조립 방식으로 애플리케이션을 개발할 수 있어 개발 생산성을..
-
[Django] 로그 설정하는 법Django 2024. 1. 10. 09:13
대략적인 방법은 이렇다. 로그 관련 파일을 만든다. 로그를 만들고 싶은 파일로 들어가 해당 파일을 임포트한다 Logging.{출력하고 싶은 로그 레벨}(들어가고자하는 내용)을 집어넣는다 # log_setter.py Import os Import time Import logging Import logging.handlers From logging.handlers import TimedRotatingFileHandler Class RetimedRotatingFileHandler(TimedRotatingFileHandler) def __init__(self, filename, when=‘h’, interval = 1, backUpCount=0 , encoding=None, delay=False, utc=Fal..
-
[Django] CHAR 적용하기Django 2024. 1. 2. 16:14
# models.py class rCharField(models.Field): description = "CHAR field in mysql" def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.max_length = kwargs["max_length"] def db_type(self, connection): return f"CHAR({self.max_length})" Django의 MTV 중 하나인 model에서는 varchar 형식만 지원해준다. Char 형식을 지정해주기 위해서는 따로 클래스를 지정하여 사용해야 한다. 적용 방식은 models.py에 rCharField 클래스를 지정해준뒤 다음과 같이 CHAR 형식을..
-
Apache JMeter(Thread Group, Sampler, Listener)Network 2023. 12. 29. 11:28
성능 테스트를 위해, Apache JMeter를 이용한다. 자바 오픈 소스 소프트웨어 퍼포먼스 테스팅은 무거운 로드와 다양하고 동시의 유저 트래픽에 대한 웹 애플리케이션을 테스트하는 것을 의미 기능 테스트, 데이터베이스 서버 테스트 및 API 테스팅에 활용 오픈 소스 라이센스 유저 친화적인 GUI 독립된 플랫폼 > Mac, unix, windows에서 모두 사용가능 자바 based 애플리케이션 멀티 스레딩 프레임워크 테스트 결과를 시각화 쉬운 설치 Highly extensible Unlimited testing capabilities 이용 : Java 설치(8 이상) > homebrew 이용 jmeter 설치 > 실행 명령어 : open /opt/homebrew/bin/Jmeter 혹은 open /usr..