thefarmersfront / helloworld-comment

Kurly Dev Blog Comment Repository
2 stars 1 forks source link

blog/vsms-performance-experiment/ #30

Open utterances-bot opened 4 years ago

utterances-bot commented 4 years ago

신규 서비스 배포 전에 실험과 개선을 반복한 이야기 - 컬리 기술 블로그

http://thefarmersfront.github.io/blog/vsms-performance-experiment/

daeun-choi commented 4 years ago

크... 여러분 너무 멋집니다!

woohyun-cho commented 4 years ago

몰입감 있게 잘 읽었습니다. 소중한 경험 공유해주셔 고맙습니다👍👍 16배 성장 가즈아!

bum752 commented 4 years ago

고민을 해결하기 위해 어려운 해결책만이 아닌 비교적 쉬운 방법을 제시하고, 테스트를 통해 검증해보는 과정이 너무 멋있고 흥미로웠습니다! 저도 마켓컬리 사용자 중 한명으로, 이렇게 많은 고민을 통해 편한 사용을 하고 있구나 느낍니다. 감사합니다

zebra0303 commented 4 years ago

테스트 주도를 통한 퍼포먼스 뿐만 아니라 리펙토링까지 한꺼번에 잡아가는 모습이 멋지네요!!!

audtjddld commented 4 years ago

고생하셨습니다!!!!

ghost commented 4 years ago

문제를 해결해나가시는 과정들이 너무 잘 표현해주셔서 잘 읽었습니다. 고생하셨습니다 !! ♥️

LeeByeongdo commented 4 years ago

좋은 글 잘 읽었습니다. 하나 궁금한 점이 있어서 질문 남깁니다.

본문중에서 리팩토링 된 코드와 기존 코드를 비교하는 부분에서 --> 보통 이런 상황이라면 두 버전의 성능이 큰 차이가 없다고 판단하고 리팩토링한 결과를 고르는 것이 올바른 선택일 것입니다.

이 부분이.. 리팩토링한것이 성능을 위해 가독성을 포기했다고 나와있는데, 만약 성능이 차이가 없으면 리팩토링 안한것으로 유지하는게 가독성 면에서 나은 상황 아닌가요?

johngrib commented 4 years ago

@LeeByeongdo "리팩토링한 것이 성능을 위해 가독성을 포기했다"는 false 입니다. 성능을 위해 가독성을 포기한 버전이 리팩토링 전 버전입니다.

  1. 성능이 잘 안 나오는 버전
  2. (1)을 개량해 성능을 위해 가독성을 포기한 버전
  3. (2)를 리팩토링해 가독성을 향상시키고 테스트코드를 추가한 버전

위의 2 버전과 3 버전을 비교하고, 3을 선택한 것입니다.

LeeByeongdo commented 4 years ago

@johngrib 아하 답변 감사합니다!

kimsangkyun commented 4 years ago

여러개의 테이블을 사용할 때 deadlock에 걸리면 테이블 수정하는 순서를 지켜주는 것과 같이 정렬을 해줌으로써 해결하는 방법이 있는데 그렇게 사용하셨네요ㅎㅎ

kenny-kerson commented 4 years ago

성능테스트 및 튜닝에 대한 소중한 경험을 잘 정리해주셔서 글 너무 잘 읽어봤습니다.

저도 궁금한 부분이 하나 있어서 글을 남겨보는데요~ 위에서 보시면 성능을 위해 리팩토링한 코드가 "Stored Procedure" 형태의 구조를 가지게 되어서 "가독성이 떨어진다"라고 이야기 해주셨는데요

여기서 Stored Procedure == 가독성이 떨어진다 라고 생각하신 이유가 있으실까요?

1) 비지니스 로직을 처리의 흐름대로 순차적으로 기술한다면, 이 측면에서는 오히려 가독성이 더 좋은게 아닌가? 2) OOP에서는, 상속/구현의 객체관점으로 접근하여, 적절한 추상화와 캡슐화를 하고, 이 객체들의 메서드를 활용하는 것이 개념에 더 부합하기에 "Stored Procedure == 가독성이 떨어진다" 라고 이야기 하신건가?

라는 생각이 들어서 문의드려봅니다.

johngrib commented 4 years ago

@kenny-kerson 올려주신 댓글을 읽고 보니 가독성이란 단어의 사용이 정확하지 않았네요. 후자에 가깝습니다. main 역할을 하는 메소드는 필요한 기능을 순서대로 호출할 뿐이라 읽기에는 나쁘지 않았어요. 스크린샷에는 포함되지 않았는데 호출 대상인 메소드 하나하나가 성능만 생각하고 빠르게 하드코딩한 상태여서 굉장히 지저분했습니다. 서브루틴에 라벨링만 한 셈이었어요. 리팩토링 후에는 각 기능이 모듈화 되어서 인터페이스만 읽어도 작업을 이해하기 쉽게 변경되었습니다.

kenny-kerson commented 4 years ago

@johngrib 후자의 접근으로 리팩토링이라면 궁금했던 부분이 해소되었네요 ^^ 빠른 답변 감사합니다~!

bajutae commented 4 years ago

좋은 글 잘읽었습니다. 귀한 포스팅 감사합니다.

gimsesu commented 4 years ago

차근차근 문제를 해결해 나간 모습이 글에서 정말 잘 느껴졌습니다. 잘 읽었습니다~!

Joy031 commented 3 years ago

안녕하세요 저는 넥스트유니콘의 뉴스룸을 만들어 나가고 있는 프로덕트 매니저 조이입니다.

마켓컬리팀의 글을 통해 실험과 개선하는 과정에 대한 이야기를 들을 수 있어 흥미롭게 읽었습니다. 프로덕트 매니저 직무에 임하고 있는 입장으로서 실험하는 과정에 대해 더 공감할 수 있었어요. 글을 읽으며, 넥스트유니콘 유저에게 소개하면 유저에게 좋은 인사이트를 드릴 수 있겠다는 생각이 들었습니다 :)

해당 콘텐츠를 뉴스룸 유저에게 소개해보시는건 어떠신가요?

joy@nextunicorn.kr 제 메일로 편하게 회신 주시면, 뉴스룸에서 좋은 콘텐츠를 소개할 수 있는 기회가 될 것 같습니다:)

kenny-kerson commented 3 years ago

안녕하세요,

메일을 잘 못보내주신게 아닌가 싶어 확인요청 드립니다. 저는 마켓컬리팀 소속이 아니라 해당 포스팅에는 댓글로 문의를 드렸었습니다.

2021년 8월 18일 (수) 14:31, Joy031 @.***>님이 작성:

안녕하세요 저는 넥스트유니콘의 뉴스룸을 만들어 나가고 있는 프로덕트 매니저 조이입니다.

마켓컬리팀의 글을 통해 실험과 개선하는 과정에 대한 이야기를 들을 수 있어 흥미롭게 읽었습니다. 프로덕트 매니저 직무에 임하고 있는 입장으로서 실험하는 과정에 대해 더 공감할 수 있었어요. 글을 읽으며, 넥스트유니콘 유저에게 소개하면 유저에게 좋은 인사이트를 드릴 수 있겠다는 생각이 들었습니다 :)

해당 콘텐츠를 뉴스룸 유저에게 소개해보시는건 어떠신가요?

@.*** 제 메일로 편하게 회신 주시면, 뉴스룸에서 좋은 콘텐츠를 소개할 수 있는 기회가 될 것 같습니다:)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/thefarmersfront/helloworld-comment/issues/30#issuecomment-900823727, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEWUJ6TSAELPRY2XAHTCM53T5NAUDANCNFSM4Q5S7OBA .