Backend

· Backend
데이터를 서빙하는 API가 하나 있는데 해당 API는 Java Spring으로 개발되어 있었고 현재 우리가 속해있는 데이터 팀에서 관리하고 있는 상태였습니다. Spring으로 만들었던 이유는 빠르게 만들어야 했고 인력도 부족했기에 일단 그렇게 만들었고 현재는 팀원들의 기술 스택이 Python을 주로 사용하고 있고 Java에 대한 경험이 많이 없기 때문에 추후 기능 추가나 이런 부분에서 유지 보수가 쉽게 하기 위해 Python으로 마이그레이션 하는 것이 필요했고 그 일을 제가 맡게 되어서 그 과정에 대해 포스팅해보려고 합니다. 현재 Serving API 파악 일단 해당 Serving API의 기능을 파악해야 했는데 API 주소, Response 스키마 등 API를 호출하는 쪽에서 필요한 부분들에 대해서는 ..
· Backend
LocustAPI 부하 테스트를 위하여 리서치 후 찾게 된 Python 기반의 부하 테스트 라이브러리.다른 Python 코드에서도 통합이 가능.pip를 통해 간편한 설치 가능.locustfile.py 파일 하나로 구성 가능.RPS(Request Per Seconds), RT(Response Time) 제공.싱글 머신에서도 충분한 부하 테스트가 가능하고, 필요하다면 분산 클러스터를 구성할 수 있으며 그 구성이 간단하게 가능.구성 요소# locustfile.py...# 동작을 실행할 User# Web UI에서 User 지정 수 만큼 클래스 인스턴스가 생성됨.# 각 클래스 인스턴스는 선택된 task를 co-routine 생성하여 실행.# 각 co-routine은 task로 지정된 함수를 실행.class Use..
· Backend
필요 설정 파일Airflowairflow.cfgFluentdfluentd.confElastalertairflow.yaml설정Dag Run LogAirflow# airflow.cfg[logging]log_format = time:%%(asctime)s filename:%%(filename)s:%%(lineno)d levelname:%%(levelname)s message:%%(message)slog_filename_template = dag/{{ ti.dag_id }}/{{ logical_date.now().year }}-{{ logical_date.now().month }}-{{ logical_date.now().day }}.loglog_formatDag를 실행시킨 후 해당 Dag에서 발생하는 로그..
· Backend
Fluentd 구성 요소 Fluentd 구조 Input : 로그 수집 플러그인. HTTP, tail, TCP 등 기본 플러그인 외에도 확장 플러그인을 통해 다양한 서버나 애플리케이션으로부터 다양한 포맷의 데이터를 수집할 수 있다.Parser (Optional) : Input 플러그인을 통해 데이터를 읽어도 Fluentd에서 지원하지 않는 데이터 포맷인 경우, 그 데이터를 Parsing 하기 위해 사용할 수 있는 플러그인. RE 기반으로 스트링을 parsing 하는 플러그인뿐만 아니라 apache, nginx, syslog 등의 다양한 포맷의 데이터를 Parsing 할 수 있는 플러그인들이 존재한다.Filter (Optional) : Input 플러그인을 통해 읽어들인 데이터를 Output 플러그인으로 보..