본문 바로가기

📚 전체글176

회고 방법 : 포스트모템(postmortem) 이전 글 AWS 프리티어 배포 후 장애 - CPU 사용률 100%, 크레딧 0개 이후 ssh 접속도 안되는 상황과 해결을 작성하며 (비교적 간단한) 기술적 문제를 되돌아 봤었다. 며칠 뒤 우연히 책 "구글 엔지니어는 이렇게 일한다"을 읽고 이전 글처럼 기술적 회고를 좀 더 잘 쓰는 방법을 알게 되었다. 그 방법은 '포스트모템'이다. 이하 내용은 책 "구글 엔지니어는 이렇게 일한다" 중 '2.4.4 비난 없는 포스트모템 문화' p86 ~ 87의 일부입니다. 포스트모템(postmortem) 실패한 근본 원인을 분석하여 문서로 남기는 것이 실수로부터 배우는 핵심이다. 이를 구글은(다른 많은 회사에서도) 포스트모템이라고 한다. - 포스트모템 문서에는 쓸모없는 사죄, 변명, 지적으로 채워지지 않도록 각별히 주의해.. 2022. 6. 12.
[서버 장애] AWS 프리티어 배포 후 장애 - CPU 사용률 100%, 크레딧 0개 이후 ssh 접속도 안되는 상황과 해결 (HW / SW(페이징 limit 문제) 상황 ec2 환경 ec2 : AWS 프리티어 t2.micro app : Docker 위에 Spring Server + Nginx 외부 DB : 약 10만개 데이터가 있는 MySQL airbnb와 유사한 숙박 앱 프로젝트를 했다. DB에 약 10만여개 더미 데이터를 넣고 배포했다. AWS 프리티어 ec2에 spring 배포하여 사용하던 중 클라이언트의 많은 요청 이후 서버가 아예 멈춰 응답을 해주지 않았고 ssh 접속도 되지 않았다. 문제 클라이언트의 많은 요청으로 CPU 사용률이 90% 이상으로 사용하다 CPU 크레딧을 모두 사용하여 CPU 성능이 떨어져 서버 응답이 매우 늦거나 아예 ssh 접속까지 안 되는 상황 발생 해결하기 위한 시도 HW적 해결 1 : CPU 크레딧 초기화하기 위한 단순한 방법 (.. 2022. 6. 9.
숙박 애플리케이션에 테스트를 위한 숙소 데이터 구하기 (공공 API사용, 직접 Dummy 데이터 생성하기) 상황 코드스쿼드 팀 프로젝트로 Airbnb와 유사한 애플리케이션을 개발하고 있다. 실서버와 유사한 부하를 느끼기 위해 많은 더미 데이터를 넣고 개발하고 싶었다. 의사 결정 더미 데이터는 크게 3곳에서 구할 수 있다고 판단하였다. 1. 공개 API 사용 2. 직접 더미데이터 생성 3. 크롤링 1. 공공 API 사용 공공데이터 포털 에 '숙박'이라고 검색하면 무려 73건의 API가 나오고 지역별로 API가 분리되어있다. (끔찍하다) 좀 더 검색해보니 한국관광공사의 TourAPI3.0에서 위와 동일한지는 모르겠지만, 전국 숙박 데이터를 모아놓았다. 불편했던 점은 TourAPI 3.0과 공공데이터 포털 두 사이트가 다른 곳인데, 공공 데이터 포털에서 TourAPI3.0을 신청하고 인증키를 받아 사용해야 한다. .. 2022. 6. 6.
[일일회고] 22.06.02 - "검증문 실패해도 계속하기, 통합테스트를 위한 더미데이터 세팅, 코드스쿼드 선배 기수와 온라인 만남" 📚 배운 것 AssertJ의 assertAll JUnit5나 AssertJ의 검증 메서드(e.g. assertThat() ..)가 여러 개 있을 때 앞의 하나가 실패하면 뒤의 검증문을 실행하지 않는다. 이를 위해 묶어서 한 번에 실행할 수 있다. 글작성 : 2022.06.02 - [✅ 테스트코드] - JUnit5에서 검증문이 중간에 실패해도 멈추지 않고 검증문 모두 실행하기(AssertAll, AssertJ, SoftAssertions) 통합 테스트의 데이터베이스 테스트, 더미데이터 세팅 통합 테스트를 위한 데이터베이스의 초기값, 더미 데이터를 넣어야 하는 상황이 있었다. 생각해본 세팅 방법은 아래와 같다. 1. java 코드로 직접 data 넣기 (하나씩 넣거나 initDB() 와 같은 마더 클래스로 .. 2022. 6. 2.
JUnit5에서 검증문이 중간에 실패해도 멈추지 않고 검증문 모두 실행하기(AssertAll, AssertJ, SoftAssertions) 상황 - JUnit5에서 하나의 테스트 코드에 N개의 검증문이 있다. - 검증문 수행 중에 앞의 검증문이 실패하면 실패한 이후의 검증문은 실행되지 않는다. 해결 하나의 검증문이 실패해도 멈추지 않고 모든 성공/실패 내역을 확인하는 방법은 아래와 같다. 방법 1. Junit5의 assertAll() + JUnit5 검증문 // https://blog.codeleak.pl/2017/11/junit-5-meets-assertj.html import static org.junit.jupiter.api.Assertions.assertAll; List owners = Arrays.asList("Betty Davis", "Eduardo Rodriquez"); // assert assertAll( () -> asser.. 2022. 6. 2.