Open MinJunKweon opened 1 year ago
Project Loom만 사용하면 비동기 로직 문제 다 해결될거야~~
비슷한 경험이 있음: 여러 객체들에 캐싱(TTL 5분)을 걸고 배포를 했는데 얼마 후 5분마다 latency, cpu, memory 등이 튀는 현상이 발견되어 캐시 문제로 성급히 판단하고 캐시 관련 설정/로직만 쳐다보고 있었음
나중에 찾아 보니 특정 테이블을 scan하는 쿼리가 있었고 해당 결과를 캐싱하도록 했는데, 처음엔 해당 테이블의 데이터가 별로 없어서 몇년간 문제가 되지 않았었는데, 마침 최근에 새로운 기획으로 인해 해당 테이블에 데이터가 대량 주입되어 쿼리날릴 때마다 문제가 되던 것
캐시의 TTL이 지나 DB를 조회할 때마다 문제가 발생했던 것이고, 사실상 캐시가 시스템이 죽지 않게 살려주고 있었음
이건 설정값 뿐만 아니라, 로직도 마찬가지 인 듯. 복잡한 레거시 로직 하나 변경했다가 장애가 난다거나...
UAT 환경이 운영계와 달라서 서비스가 중단되는 사태가 벌어지면 장비 몇 대 더 추가하는 비용보다 훨씬 더 값비싼 대가를 치르게 됩니다
-> 딱히 공감은 되지 않음. 작은 시스템이면 상관 없는데, 이렇게 할 수 있는 곳이 많으려나? 이런 UAT 환경을 갖춘 채 유지하려면 돈이 너무 많이 듦. 우리 DB 비용만해도... 음....
원래 갖고 있는 생각이나 신념을 확인하려는 경향성
-> 설명이 이게 맞나? 잘 이해가 안되는데..
확증 편향은 '자신의 신념이나 가치를 확인하거나 뒷받침하는 방식으로' 정보를 검색, 해석, 호의 및 회상하는 경향 - Wikipedia(영문 번역)
이 설명이 더 와닿는 듯
대학 과제로 진행했던 설문조사들이 생각나는 군
보통 사람들은 A,B 중엔 A를 / C,D 중엔 D를 고른다고 함. 근데 A를 고른 사람이 D를 고르는 것은 비이성적이라고 함.
잘 이해 안됨. A,B 중에서 A를 골랐다고 해서 왜 C,D 중에서 D를 고르는게 이성적이지 않은거지??
A, B중에서 A를 고른 이유는 암묵적으로 녹색이 빨간공보다 많다고 생각한 것이기 때문에, D를 고르는건 비이성적이고, C를 고르는게 이성적이다
라고 나와있는데, 이것은 가정이 잘못된 것 같음. A,B 중에서 A를 고르는 사람 중녹색이 빨간공보다 많다고 생각하기 때문에 A를 고르는 사람
이 얼마나 될까? 단지 A는 확정적으로 1/3이고 B는 불확실하기 때문에 A를 고른 것이지, 암묵적으로 녹색공이 빨간공보다 많다고 생각해서 A를 고른 것은 아닐 것임.
https://web.obsidianscheduler.com/why-developers-keep-making-bad-technology-choices/
안티 패턴 예시들
ref: http://principlesofchaos.org/
지연테스트 : 종단 트랜잭션에 걸리는 시간을 테스트
처리율 테스트 : 현재 시스템이 처리 가능한 동시 트랜잭션 개수 테스트
부하 테스트 : 특정 부하를 감당할 수 있는지 테스트
스트레스 테스트 : 이 시스템의 한계점은 어디인지 테스트
내구성 테스트 : 시스템을 장시간 실행할 경우 성능 이상 증상이 있는지 테스트
용량 계획 테스트 : 리소스를 추가한 만큼 시스템이 확장되었는지를 확인하는 테스트 ( Scalue Out/ Up 을 하고 처리량 테스트를 하는 것으로 이해함 )
저하 테스트 : 시스템이 부분적으로 실패할 경우를 테스트
위 테스트들을 같은 용어로 부르기도 했었는데, 이번 기회에 정리할 수 있어서 좋았다!
JIT를 타겟으로 삼거나 안삼을 수도 있는 기능이 따로 있구나 처음 알았다.
개발자들은 왜 잘못된 기술 선택을 밥 먹듯이 하나
그것이 개발자니까
지루함 : 맨날 쓰는게 똑같으니까 지겨워서 새로운 시도!
이력서 부풀리기 : 이직할라고!
또래 압박 : 가면증후군으로 인해 뭔가 남들 앞에서 멋져 보이려고 중요한 결정을 쉽게 함
이해 부족 : 하이버네이트 씁시다! 공감하는 부분임. 팀에서 신입 분이 JPA를 안쓰고 하이버네이트만으로 개발해봤는데 진짜 생 지옥이었다고 함.
오해와 있지도 않은 문제 : 문제 자체를 잘못 인식해서 오로지 기술을 사용해서 문제를 해결하려는 경향. ( 뜨끔..! )
뭔가 이 파트는 이 책이 굉장히 딱딱했는데 좀 유쾌한 파트여서 재밌었음 ㅋㅋ
https://minkukjo.github.io/cs/2022/07/17/netflix/
느낀점
정리
성능 테스트 종류
성능 튜닝 시 지켜야할 세 가지 기본 원칙
성능 안티패턴
안티패턴의 원인 1 - 지루함
안티패턴의 원인 2 - 이력서 부풀리기
안티패턴의 원인 3 - 또래 압박
안티패턴의 원인 4 - 이해 부족
안티패턴의 원인 5 - 오해와 있지도 않은 문제