분류 전체보기
-
테스트 코드 리팩토링 (Feat. 단위테스트, 최적화, 인수테스트 구현하기)학습로그 2022. 6. 10. 10:26
이전의 테스트 코드는 단위테스트 구성이 전혀 되어있지 않았고, 테스트 비용을 생각하는 최적화부분도 없고 심지어 인수테스트 조차 없었다...!🤦♀️ 코드리뷰를 받으면서 테스트 코드 리팩토링도 함께 진행하였는데, 가장 먼저 1) 테스트 환경을 분리하고 2) 단위테스트 와 3) 인수테스트 도 구현하도록 하였다. 또한, @SpringBootTest, @DataJpaTest 등의 어노테이션을 사용하여 테스트를 진행할 때, 해당 어노테이션의 옵션이 다르거나, mockBean의 생성 부분들에 영향을 받게 되면 추가로 어플리케이션 컨텍스트를 생성하여 테스트를 진행하여 속도를 늦추는 원인이 된다는 것을 배우게 되었다. 즉, 같은 @DataJpaTest와 @SpringBootTest 어노테이션을 적용하여 각각 2개의 테..
-
프로젝트 코드 리팩토링학습로그 2022. 6. 10. 10:24
지난 6개월간 혼자했던 프로젝트를 멘토님과 함께 리팩토링을 진행하면서 어떤 부분을 어떻게 리팩토링하고자 했는지 전반적인 정리를 해보고자 한다. 리팩토링은 하나의 PR당 하나의 객체를 주제로 하고, 레이어별로 리팩토링 및 테스트 코드 수정의 방식으로 진행했다. 자바 코드 컨벤션, 객체지향 생활체조, 케이스 스타일 지키고 리팩토링 학습 가장 먼저 지켜야 할 기본적 규칙들에 대해 학습하고 이를 지켜서 코드를 구현하고자 했다. 블로그에 글을 작성하여 학습을 진행했고 추가적으로 리팩토링 책의 예제부분을 공부하면서 리팩토링을 해야하는 이유 및 방법에 대해 학습하였다. 또한 코드를 작성할 때는 method reference및 stream을 이용하여 간단하고 명료하게 의도를 나타낼 수 있도록 작성했다. https://..
-
@Aspect (AOP) 적용하기Spring 2022. 6. 9. 00:21
김영한 강사님의 스프링 고급편을 듣고, 이번 withEmployee 프로젝트 리팩토링을 진행하면서 프로젝트에 AOP를 구현하고 싶었기에 공부한 내용을 바탕으로 프로젝트에 클래스 깊이를 나타내면서 로그를 나타내는 부분을 AOP를 적용하기로 했다. AOP AOP 는 Aspect Oriented Programming(관점 지향 프로그래밍) 으로 핵심기능 관점과 부가적인 기능 관점을 나누어 보고 흩어진 부가기능 관심사를 모듈화 하여 핵심비지니스에서 분리하여 관리하는 것을 말하며 여러 오브젝트에 산재해서 나타나는 공통적인 기능인 횡단 관심사를 깔끔하게 처리하기 어려운 OOP의 부족한 점을 보완한다. 스프링에서의 AOP 스프링 AOP 는 런타임시에 프록시를 생성하는 프록시 패턴 기반의 AOP 구현체 로 스프링 빈에..
-
withEmployee(Springboot + React) 프로젝트 코드개선 및 성능 개선학습로그 2022. 6. 5. 03:08
walkerholic 프로젝트에 이어 withEmployee 프로젝트에서도 성능을 측정해 보았다. 성능 측정 결과 성능측정 결과는 다음과 같았다. ↓ https://www.webpagetest.org/result/220604_AiDcE4_6PF/ WebPageTest Performance Test Results Check out these web performance test results on WebPageTest.org: www.webpagetest.org Compress transfer를 제외하고는 모두 A점수를 받았고, First Byte, FIrst VIew, FCP, Speed Index, LCP 모두 양호한 것으로 확인되었다. 성능점수도 96점으로 측정되었다. 부하테스트 로그인하고 회사목록,..
-
walkerholic(Springboot + React) 프로젝트 ④ 성능 개선 결과 확인학습로그 2022. 6. 3. 06:09
이제 단계별 성능개선을 통해나온 값을 가지고 어느정도 성능이 개선되었는지 비교해보자. 성능개선 단계별 변화 성능 개선 개선 전 Progressive Images Redis Cache gzip, cache, http2 DB replication 및 부하분산 First Byte 1.239S 1.060S 1.239S 1.124S 1.062S First View 19.320S 9.421S 8.898S 5.514S 5.492S First Contentful Paint 3.557S 3.366S 3.557S 2.713S 2.555S Speed Index 7.766S 7.542S 7.666S 5.130S 5.009S Largest Contentful Paint 9.887S 9.578S 9.867S 5.722S 5.59..
-
walkerholic(Springboot + React) 프로젝트 ③ 성능개선하기학습로그 2022. 6. 3. 05:41
이번엔 was서버에서 redis 캐시, 외부 API 비동기, index 설계 및 리버스프록시에서의 gzip, cache, http2, 부하분산 등의 적용을 통하여 성능을 개선시킨다. 성능개선 ② redis 캐시 및 @Async, index 설계의 적용 1) Redis 캐시 Redis 캐시를 적용하기 위한 기본 내용은 이전의 블로그에서 작성해두었다. ↓ https://dodop-blog.tistory.com/321 화면 응답 개선하기 이번엔 화면응답속도를 개선하는 방법에 대해 알아보자. 화면 응답 속도를 개선하는 방법에는 인터넷구간 성능 개선을 통한 방법과 데이터 조회 성능 개선의 방법이 존재한다. 인터넷 구간 성 dodop-blog.tistory.com 메인페이지에서 로딩하는 product와 post의..
-
walkerholic(Springboot + React) 프로젝트 ② 서버 진단(+부하테스트)하고 목표정하기학습로그 2022. 6. 3. 05:06
이제 배포된 서버를 진단하고 목표를 정하도록 하자. 서버 진단하기 서버진단은 다음의 사이트에서 진행할 수 있다. https://www.webpagetest.org/ WebPageTest View this on WebPageTest.org... www.webpagetest.org https://pagespeed.web.dev/?utm_source=psi&utm_medium=redirect PageSpeed Insights 올바른 URL을 입력하세요. pagespeed.web.dev WebPageTest의 요약 결과는 다음과 같았다. 두 사이트에서 진행한 나의 배포 사이트와 경쟁 사이트의 테스트 결과는 다음과 같았다. walkerholic(내 프로젝트) 네이버 블로그 네이버 쇼핑 티스토리 성능 76 67 8..
-
walkerholic(Springboot + React) 프로젝트 ① 망구성하고 배포하기학습로그 2022. 6. 3. 04:32
이제 이전 미션에서 진행한것을 참고하여 개발한 프로젝트를 배포하기로 했다. 망 구성 망구성은 배스천 서버, 외부망(서비스)서버, 내부망(데이터베이스)서버로 구성하도록 하고, 외부망 앞에 리버스 프록시를 구성하여 배포하도록 설정하였다. 보안은 이전 미션에서 구성했던 것처럼 22번 포트는 bastion서버에서 내 IP로만 오픈하도록 하였다. 망구성이 궁금하다면 이전에 작성해둔 내 블로그를 참고하면 된다! ↓ https://dodop-blog.tistory.com/310 AWS 망 구성하고 서비스 배포하기 이번에는 AWS를 통해 망을 구성하고 서비스를 배포하는 미션을 진행했다. 배포부분은 heroku 배포를 제외하고는 진행해본 적이 없기에 이번 미션을 통해서 배포에 대해 많은 부분을 배울 수 있어 dodop-..