실제 비즈니스 문제를 위한 Sales Visualizer를 만들었습니다 (Quantium Software Engineering Simulation)
Source: Dev.to
번역을 진행하려면 번역하고자 하는 전체 텍스트(마크다운 형식 포함)를 제공해 주시겠어요?
코드 블록, URL 및 마크다운 구문은 그대로 유지하면서 본문 내용만 한국어로 번역해 드리겠습니다.
연말 프로젝트: Quantium 소프트웨어 엔지니어링 시뮬레이션
“배우는 가장 좋은 방법은 실제 무언가를 만드는 것이다.”
2025년을 마무리하며 Forage에서 Quantium의 Software Engineering 시뮬레이션을 완료했습니다. Tata GenAI Data Analytics Challenge와 여러 데이터 기반 앱을 마친 후, 또 다른 실전 프로젝트를 할 준비가 되었습니다.
직접 해보고 싶으신가요? 시뮬레이션을 여기에서 확인하세요 (스포일러 경고!).
시나리오 – Quantium의 소프트웨어 엔지니어
당신은 소프트웨어 엔지니어로서 Quantium의 금융 서비스 사업부에서 일하며, 클라이언트 Soul Foods를 담당합니다.
| 클라이언트 | 문제 | 목표 |
|---|---|---|
| Soul Foods | 가격 인상 후 베스트셀러 캔디 Pink Morsels의 판매량이 감소 | 인터랙티브 시각화 도구를 구축하여 다음 질문에 답하기: “2021년 1월 15일 가격 인상 전과 후, 어느 시점에 판매량이 더 높았나요?” |
이는 단순한 튜토리얼이 아니라, 코드 기반 솔루션이 필요한 실제 비즈니스 질문이었습니다.
Source: …
The Challenge – Six Progressive Tasks
시뮬레이션은 작업을 단계별로 구성하여 각 과제가 이전 과제 위에 자연스럽게 쌓이도록 합니다. 실제 프로젝트와 같은 흐름을 제공합니다.
Task 1 – Set Up Local Development Environment
- 레포지토리를 포크합니다.
- 파이썬 가상 환경을 생성합니다.
- 의존성을 설치합니다 (
dash,pandas등).
Takeaway: 깔끔하고 잘 정리된 작업 공간은 나중에 수많은 시간을 절약해 줍니다.
Task 2 – Data Processing: The Art of Reshaping Data
세 개의 지저분한 CSV 파일에 전체 morsel 제품 라인의 거래 데이터가 들어 있습니다. 이를 정돈된 데이터셋으로 변환했습니다.
Pipeline steps
- Filter – Pink Morsels에 해당하는 행만 남깁니다.
- Calculate –
Sales = quantity × price를 계산합니다. - Normalize – 통화 기호를 제거하고, 날짜를 파싱하며, 지역 이름을 표준화합니다.
- Output –
Sales,Date,Region열을 가진 깨끗한 CSV 파일을 작성합니다.
불규칙한 컬럼 명명을 처리하기 위해 유연한 컬럼 탐지 도우미(find_column)를 사용한 방어적인 ETL 스크립트를 작성했습니다.
Task 3 – Create the Dash Application
다음과 같은 최소 Dash 앱을 구축했습니다:
- 비즈니스 질문을 명시하는 명확한 헤더 표시.
- 일일 매출을 나타내는 라인 차트 표시.
- 2021‑01‑15(가격 인상일) 에 수직 마커 추가.
차트는 Soul Foods의 질문에 즉시 답을 제공했습니다 – 영향을 바로 볼 수 있었습니다.
Task 4 – Make It Interactive & Beautiful
클라이언트가 요청한 기능을 추가했습니다:
- 지역별 필터링을 위한 라디오 버튼 (North, East, South, West, All).
- 현대적이고 깔끔한 모습을 위한 커스텀 CSS.
- 다양한 화면 크기에 대응하는 반응형 레이아웃.
Dash 콜백을 통해 지역을 선택하면 차트가 즉시 업데이트됩니다.
Task 5 – Write a Test Suite
프로덕션 수준 코드에는 테스트가 필요합니다. pytest와 Dash 테스트 유틸리티를 사용해 다음을 검증했습니다:
- 헤더 존재 여부.
- 그래프 렌더링.
- 지역 선택기 기능.
재귀적인 컴포넌트 탐색기를 이용해 레이아웃 트리를 순회함으로써 코드가 진화해도 회귀를 방지합니다.
Task 6 – Automate Everything with CI
Bash 스크립트 하나로 지속적 통합을 자동화했습니다:
#!/usr/bin/env bash
set -euo pipefail
# Activate virtual environment
source .venv/bin/activate
# Install dependencies (if needed)
pip install -r requirements.txt
# Run the full test suite
pytest
스크립트는 적절한 종료 코드를 반환하여 CI 엔진이 성공/실패를 자동으로 보고하도록 합니다.
왜 이 도전이 멋진가
| # | 이유 |
|---|---|
| 1. Progressive Complexity | 각 작업이 이전 작업을 기반으로 하여, 더 스마트한 아키텍처 선택을 위한 컨텍스트를 제공합니다. |
| 2. Real‑World Messiness | 통화 기호, 일관되지 않은 열 이름, 다중 입력 파일 등이 방어적이고 프로덕션 준비된 코드를 강제합니다. |
| 3. End‑to‑End Ownership | 원시 CSV부터 테스트와 CI가 포함된 배포된 앱까지 – 모든 스택 레이어를 다루었습니다. |
| 4. Practical Business Context | “가격 인상 전후 매출이 더 높았는가?” 라는 질문에 답하는 것은 실제 분석가 업무와 유사합니다. |
| 5. Modern Stack | Dash + Plotly + Pandas는 프로덕션에서 사용되는 스택이며, 기술 습득이 직접적으로 이어집니다. |
내가 만든 것
| Deliverable | What It Does |
|---|---|
| Data Processing Script | 세 개의 원시 CSV를 정리된 분석‑준비 데이터셋으로 변환합니다. |
| Dash Application | 지역 필터링이 가능한 인터랙티브 판매 시각화 도구입니다. |
| Visualization Module | 가격 상승 주석이 포함된 Plotly 라인 차트입니다. |
| Test Suite | 핵심 UI 컴포넌트를 검증하는 Pytest‑기반 테스트입니다. |
| CI Automation | CI 파이프라인에서 자동 테스트를 수행하는 Bash 스크립트입니다. |
Tech Stack
- Python 3.9
- Pandas – data wrangling
- Dash & Plotly – interactive web app & visualizations
- Pytest – unit & integration testing
- Bash – CI automation script
Final Thoughts
Quantium 시뮬레이션은 실제 소프트웨어 엔지니어링 프로젝트를 닮은 간결하고 엔드‑투‑엔드 경험을 제공했습니다. 데이터 처리, 시각화, 테스트 및 CI 기술을 연마하면서 실질적인 비즈니스 인사이트를 전달했습니다. 실용적인 솔루션 구축을 즐긴다면, 이 시뮬레이션을 꼭 시도해 보시길 강력히 추천합니다!
기본
- Dash – 데이터 애플리케이션용 웹 프레임워크
- Plotly Express – 인터랙티브하고 아름다운 차트
- Pandas – 데이터 조작 파워하우스
- Pytest – 테스트 프레임워크
- Bash – CI 자동화 스크립팅
- CSS – 세련된 UI를 위한 커스텀 스타일링
👉 내가 제출한 레포지토리
👉 원본 소스 코드
주요 내용
- 깨끗한 데이터부터 시작하세요 – 입력이 엉망이면 출력도 엉망. 견고한 ETL에 투자하세요.
- 데이터가 스스로 말하게 하세요 – 간단한 시각화가 복잡한 시각화보다 더 좋은 이야기를 전달하는 경우가 많습니다.
- 사람을 위해 설계하세요 – 예쁜 UI는 허영이 아니라 사용성을 위한 것입니다.
- 조기에, 자주 테스트하세요 – 간단한 테스트조차 실제 버그를 잡아냅니다.
- 지루한 작업은 자동화하세요 – CI 스크립트가 수작업 시간을 크게 절감합니다.
- 모듈형 아키텍처가 승리합니다 – 데이터, 시각화, 웹 레이어를 분리하면 반복 작업이 쉬워집니다.
직접 해보세요
그럼 돌아와서 알려 주세요:
- 시각화 도구를 어떻게 스타일링했나요?
- 데이터에서 어떤 패턴을 발견했나요?
- 가격 인상 후 매출이 실제로 상승했나요, 하락했나요? 😏
Potential Next Steps
| Enhancement | Description |
|---|---|
| Additional Filters | 날짜 범위 선택기 또는 제품 유형 선택기 추가 |
| Statistical Annotations | 차트에 전후 평균을 직접 표시 |
| Docker Deployment | 클라우드 배포를 쉽게 하기 위해 컨테이너화 |
| Database Backend | CSV를 적절한 데이터 저장소로 교체 |
| Advanced Analytics | 추세선, 예측, 이상 탐지 |
최종 회고
이 프로젝트는 나를 데이터 엔지니어, 프론트엔드 개발자, 그리고 DevOps 실무자라는 여러 역할에 걸쳐 확장시켰습니다. 실제 소프트웨어 문제는 깔끔한 상자 안에 들어 있지 않죠. 나는 작동하는 애플리케이션, 깔끔한 아키텍처, 그리고 최신 데이터 시각화 스택에 대한 실무 경험을 얻고 떠났습니다.
Soul Foods의 질문에 대한 답? 직접 앱을 실행해 보세요. 데이터는 거짓말을 하지 않으니까요. 📊