고려해야 할 사항
- spark와 연동성이 뛰어나면 좋음
- batch job (ex) 에어플로우 등
- 안정성
Front-end
HTML, JavaScript
- 결정
Back-end
Django
- 장점
- CRUD 기반에서는 월등한 효율을 보이며, 기본적인 기능들이 모두 개발되어 있음
- 한 프로젝트 내에 여러 어플리케이션을 동시 개발 가능하며 재사용 가능하고, 개별 프로젝트 관리도 용이함
- 강력한 ORM 기반으로 DB 접근이 용이하고 쉬움
- 인스타그램, 번개장터, Laftel 화해 등 많은 사이트가 개발에 사용하고 있기에 최소한의 안정성은 있다고 볼 수 있음
- spark, ES와 관련된 모듈들이 이미 존재하고 편하게 사용할 수 있음
- 단점
- 모듈이 우리와 적합하지 않거나 새로 많들어야 할 때 어려울 확률이 높음
- 파이썬 언어 자체의 한계점을 통한 성능 -> 속도, 수용력 -> 확장이 용이하기에 다른 프레임워크를 성능 때문에 선택할 확률은 적음
Database
PostgreDB
- 오픈 소스, window, 리눅스, 맥, 유닉스 등 다양한 운영체제 지원
- DB 보안을 위해 데이터 암호화, 접근 제어, 접근 감시 3가지로 구성
- java, php, perl 등 스크립트 언어도 지원
- 신뢰성과 안정성이 매우 높음
- Disk사용량이 타 DB보다 많음
- 대용량 운영이 편하고 빠름
- 다양한 join 방법을 제공함
- insert 위주의 대규모 서비스의 경우 아주 좋음
- update가 자주 필요한 서비스의 경우 성능이 불안정
- 복잡한 쿼리를 요구할 때 사용하면 뛰어난 성능을 발휘함
MySQL
- SQL 기반 DBMS로 거의 모든 운영체제에서 사용가능
- 처리 속도가 상당히 빠르고 대용량에 데이터도 처리하기 용이하다는 평가
- 보안성이 우수함
- 무난한 database이며 상용 사용 시 유료
- 속도 및 성능이 무난하다는 평가
- update 성능이 뛰어나지만, 복잡한 알고리즘은 지원하지 않음
- 간단한 data 트랜잭션을 위한 DB가 필요한 웹이면 가장 먼저 고려하는 db
- 복잡한 쿼리 등을 사용시 성능 저하
Workflow Manager(Batch Job)
Airflow
- Workflow를 관리할 때 요즘 가장 많이 쓰이는 툴
- Airbnb에서 개발한 워크플로우 관리 도구
- Task-driven
- Python 기반의 스크립트로 작성
- Task를 DAG로 구성
- Web Server는 Flask 기반
- Web을 통해 직관적으로 Workfolw 모니터링 및 관리 가능
- 기본적인 기능만으로 파이프라인 구축 가능
DAGSTER
- Airflow랑 비슷하지만, data-driven
- Dag 기반 as Pandas, Spark, SQL를 통해 만들어지는 결과를 local이나 cloud에서 실행할 수 있게 하는 것이 목표
- Dag으로 만든 data logic을 Data application으로 만드는 것
PERFECT
- 2017년에 출시되어 가장 현대적임
- workflow 자동화 도구
- Airflow와 기능은 동일하나, Airflow보다 사용하기 쉽고 좀 더 현대적인 workflow 관리 가능
- 설치 및 사용이 간편하고, 버전 관리 등 편한 기능이 있다는 여론이 다수 존재