오늘의 공부 오늘은 프로젝트 중간 발표를 진행하였고, 멘토님께서 이야기하신것들에 대해 정리해보겠다. 프로덕션 서비스에서는 낙관적인 락을 사용하는 경우가 많음 정량적인 지표가 필요하다. 비관적 락 vs 낙관적인 락 성능 지표는 최대치를 기준으로 redis을 사용했을 떄 db 조회 흐름 redis는 어느 영역에서 가장 많이 사용되고 있는가? 추후에 캐싱 확장해서 써볼 것을 고려해봤는가? 다른 기능까지? redis 데이터 자료 구조도 고민을 해봐야한다. redis 데이터 부하량과 저장되는 데이터가 많다면 여기에 대한 해결 방안은 있는가? QueryDSL로 커버할 수 없는 영역은 무엇으로 할 것인가? QueryDSL만 사용을 할 것인가? JPA의 QueryMethod를 같이 사용하는가? 양방향과 단방향을 사용하..
1분동안 3000건 전체 조회 ( 페이지 ) OS 환경 Window 10 Pro RAM 32GB MySQL 8 PostgreSQL 15 Spring 3.1.2 JDK 17 기존 코드 @Transactional(readOnly = true) public List findAllIdea(String keyword, Category category, Integer page) { if (StringUtils.hasText(keyword) && !Objects.isNull(category)) { throw new IdeaFindException(IdeaFindErrorCode.KEYWORD_CATEGORY_SAME); } List findList; Sort sort = Sort.by(Sort.Direction.AS..
오늘의 공부 오늘은 프로젝트의 아이디어 게시글 전체 조회 에 대해서 성능 테스트를 하였다. EC2 에 아래와 같은 설정을 통해 실제로 테스트 해보았다. OS Ubuntu 22.04 AWS 인스턴스 t2.micro CPU vCPU(가상 CPU) 1 core Memory 3G( Memory 1G + Swap 2G ) 데이터 건수 유저 10만건, 아이디어 게시글 100만건 3000건 서버 CPU, RAM 그래프 2000건 서버 CPU, RAM 그래프 300건 서버 CPU, RAM 그래프 이러한 문제로 성능 개선이 필요할것 같다. 아래의 에러가 뜬다. 먼저 생각 해보고 검색 결과 현재 코드에서는 아래와 같이 if 문을 통해 전체 검색인지 단건 조회인지 검색인지 판단하고 그에 해당하는 리스트를 반환해준다. 또한 ..
오늘의 공부 오늘은 이력서들을 간단하게 1차 생성을 하였다. 이력서들을 적어보니 너무나 부족한것이 많았지만 그래도 채워볼려고 노력하였다. 소개글을 뭐라고 적을지 잘 몰라서 고민중이다..ㅠㅠ 내일은? 실제로 EC2 에서 프로젝트 배포후 성능 테스트하고 성능 개선할 예정이다.
오늘의 공부 오늘은 성능 테스트 유형에 대해서 공부하였다. 1) Load Test : 동시 사용자 또는 프로세스 수에 의해 생성되는 트랜잭션의 요청으로 인해 현실적인 부하 수준을 처리하는지에 대한 시스템 성능 측정 2) Stress Test : 임계값 이상의 요청이나 비정상적인 요청을 보내 비정상적인 상황의 처리 상태를 확인하고 시스템의 최고 성능 한계를 측정하기 위한 테스트 3) Spike Test : 갑자기 사용자가 몰렸을 때 요청이 정상적으로 처리되는지, 또는 업무 부하가 줄어들 때 정상적으로 반응하는지를 확인 4) Scalability Test / Soak Test : 긴 시간 동안 테스트를 진행해서 테스트 시간에 따른 시스템의 메모리 증가, 성능 정보의 변화 등을 확인 이러한 테스트가 있다. 내..
오늘의 공부 오늘은 Jmeter 에 대해 조사해보고 다른것이 있는지 조사해보았다. 또한, 실제로 적용해보고 부하테스트도 해보았다. 내일은 더미 데이터를 모아서 실제로 성능 테스트를 해보는 시간을 가져야겠다! https://domae.tistory.com/116 테스트 도구 Apache JMeter Apache JMeter 란? Java 로 GUI 기반으로 서버, 서버 그룹, 네트워크 또는 개체의 과부하를 시뮬레이션하여 강도를 테스트하거나 다양한 부하 유형에서 전체 성능을 분석하는 데 사용할 수 있다. 지원 domae.tistory.com 조사 비교 표 특징 / 도구 Apache JMeter Gatling Locust 언어 Java Scala Python UI GUI 기반 코드 기반 코드 기반 지원 프로토..
오늘의 공부 오늘은 JMeter 같은 성능 테스트 툴에 대해 알아보고 공부 해보았다. 들을 비교하겠습니다. 특징 / 도구 Apache JMeter Gatling Locust 언어 Java Scala Python UI GUI 기반 코드 기반 코드 기반 지원 프로토콜 HTTP, JDBC, FTP, SOAP 등 다양함 HTTP, JMS, JDBC 주로 HTTP 확장성 플러그인으로 확장 가능 확장성이 뛰어남 (Akka 기반) 사용자 정의 코드로 확장 가능 분산 테스팅 가능 가능 (하드웨어에 의존) 가능 결과 분석 다양한 차트 및 리포트 제공 HTML 리포트 제공 간단한 웹 UI 및 CSV 리포트 성능 메모리 사용량이 다소 높음 경량하고 빠름 경량하고 유연함 스크립트 생성 레코딩 기능 제공 코드 작성 필요 코드 ..
오늘의 공부 오늘은 실시간 경매 사이트 프로젝트 MVP 기능인 아이디어 경매글 전체, 단건 조회를 맡고 개발하였다. 테스트코드도 같이 작성하여 이번에 한번더 Mock 에 대하여 찾아보고 공부하였다. 또한 Docker Hub VS AWS ECR 에 대해 논의를 한적이 있다. 개인적으로는 Docker Hub 를 써봤지만 이번에 처음으로 AWS ECR 에 적용하기로 하였다. 이유는 우리 프로젝트에서는 AWS 말고 다른 플랫폼 이용할 이유가 없었기 때문에 AWS 의 CloudWatch 로 로그와 이벤트를 모니터링을 한번에 할수 있다는 장점을 가지고 이야기를 하였다. 서로 의견을 나눠본 결과 AWS ECR 을 쓰자는 의견이 나와 Docker img 를 ECR 에 저장하는 공간으로 쓰기로 하였다. 이후에는 컨테이너..
오늘의 공부 프로젝트 2주동안 너무 바빠서 블로그 쓸 틈이 없었다... 프로젝트 개발하고 있는 와중 잠이 부족하여도 열심히 하였고, 블로그 쓸 시간 자체가 없었다. 하지만 이제 마지막 파이널 프로젝트인만큼 개발하면서 정리를 하자고 한다. 현재는 Jira 로 관리하면서 Slack 으로는 공적이 대화와 카톡으로 사적인 대화를 나눠서 현재 진행하고 있고 기획단계이다. 챌린저팀인 만큼 성능을 극한으로 끌어올릴것이다. 내일은? 내일부터 기획하고 여러 기술들을 조사하고 블로그를 쓸 예정이다. 또한, SA 제출이 끝났음으로 어떠한 기술을 넣어볼까 생각하고 토론하여 결정하는 시간을 갖고 실제로 내일 부터는 개인 개발 공부를 조금씩 하여 적용해보아야겠다.