Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perf : 검사 결과를 통계 정보로 변환하는 Batch 성능 개선 #40

Merged
merged 8 commits into from
Jul 3, 2024

Conversation

joon6093
Copy link
Member

@joon6093 joon6093 commented Jul 3, 2024

📌 관련 이슈

✨ PR 세부 내용

  • 기존의 reader, processor, writer 구조를 단일 tasklet으로 재구성
  • MongoDB Aggregation을 이용하여 데이터 변환 및 통계 처리
  • 기존 코드와 성능 비교를 통해 개선 여부 검증

📄 개선 결과

개선 전

  • 16 * 10 테스트 (16개의 MBTI 유형 각각에 대해 10개의 테스트 데이터 처리)

    • 1차: 26s 971ms
    • 2차: 27s 102ms
    • 3차: 26s 843ms
  • 16 * 50 테스트 (16개의 MBTI 유형 각각에 대해 50개의 테스트 데이터 처리)

    • 1차: 2m 4s 892ms
    • 2차: 2m 5s 312ms
    • 3차: 2m 4s 756ms

개선 후

  • 16 * 10 테스트 (16개의 MBTI 유형 각각에 대해 10개의 테스트 데이터 처리)

    • 1차: 5s 332ms
    • 2차: 5s 213ms
    • 3차: 5s 348ms
  • 16 * 50 테스트 (16개의 MBTI 유형 각각에 대해 50개의 테스트 데이터 처리)

    • 1차: 5s 357ms
    • 2차: 5s 298ms
    • 3차: 5s 376ms

기존 구조에서 단일 Tasklet으로 재구성하고 MongoDB Aggregation을 활용한 결과, 성능이 크게 개선되었습니다. 또한, 데이터의 양이 증가해도 처리 시간이 거의 일정하게 유지됨을 확인했습니다.

@joon6093 joon6093 requested a review from DongHyeonka July 3, 2024 06:32
@joon6093 joon6093 self-assigned this Jul 3, 2024
Copy link
Member

@DongHyeonka DongHyeonka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

성능 개선 결과 잘 봤습니다! 단일 tasklet으로 구성 한거면 reader, processor, writer 이렇게 하나로 구성된건가요?
그리고 mongodb에 Aggregation이 어떤 역할을 하는지 궁금합니다!

@joon6093
Copy link
Member Author

joon6093 commented Jul 3, 2024

성능 개선 결과 잘 봤습니다! 단일 tasklet으로 구성 한거면 reader, processor, writer 이렇게 하나로 구성된건가요? 그리고 mongodb에 Aggregation이 어떤 역할을 하는지 궁금합니다!

네 맞아요. 기존의 reader, processor, writer 구조를 mongodb에 Aggregation을 사용하기 위해 단일 tasklet으로 재구성했어요.

MongoDB Aggregation은 여러 단계의 파이프라인을 통해 데이터를 처리하고 변환하는 기능을 해요. 이 과정에서 다양한 연산을 적용하여 데이터의 변형, 필터링, 그룹화 등을 수행할 수 있어요.
예를 들어, 이번 작업에서는 검사 결과 데이터를 통계 정보로 변환하는데 사용했어요. 기존 reader, processor, writer 구조는 검사 결과 데이터를 하나씩 읽어오기때문에 데이터가 증가할때마다 선형적으로 소요시간이 증가한다는 단점이 있어요. 이를 해결하기 위해 MongoDB Aggregation을 사용하여 대량의 데이터를 처리했어요.

@joon6093 joon6093 merged commit e382f20 into team-meot-ppo:main Jul 3, 2024
@DongHyeonka
Copy link
Member

네 구체적인 답변 감사합니다 다음에 공부할 때 참고해야겠네요

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

검사 결과를 통계 정보로 변환하는 Batch 성능 개선
2 participants