
[hikaricp connection is not available] - 테이블은 많지만 회전율은 낮은..6명이 동시에 요청하면 OOM 발생하는 서비스영어회화 스터디 서비스를 개발하면서 부하 테스트를 위해 클라우드 환경에 필요한 서비스들을 컨테이너 환경으로 실행했다.클라우드 서비스는 Naverhappygimy97.tistory.com 지난 포스팅에서 offset 기반의 페이징 기법을 사용해서 검색 API를 테스트한 과정과 hikaricp pool이 부족해 DB와 연결 가능한 커넥션이 더 이상 없을 때 발생하는 에러에 대해서 이야기를 했었다. 그런데 찾아보니 vuser를 100 이상으로 설정하여 테스트하는 경우는 없는 것 같았다. 심지어 지인 중에 시니어분들이 몇 분 계셔 여쭤보니 실무에서도 vuser 4..

6명이 동시에 요청하면 OOM 발생하는 서비스영어회화 스터디 서비스를 개발하면서 부하 테스트를 위해 클라우드 환경에 필요한 서비스들을 컨테이너 환경으로 실행했다.클라우드 서비스는 Naver cloud platform의 서비스들을 이용했다. 🛠happygimy97.tistory.com 📌 테스트 배경 지난 포스팅에서 50만 건의 데이터를 findAll()로 모두 조회하는 API를 테스트했다가 6명의 유저(vuser)만으로 힙메모리 초과로 OOM이 발생했었다. 이를 해결하고자 offset과 pageSize를 설정해 50만 건 중 조건에 맞는 데이터를 pageSize만큼 가져오는 것을 테스트했고, 에러 없이 정상적으로 테스트를 수행하는 것을 확인할 수 있었다. 이번 포스팅에서는 vuser를 늘려가며 테스..
영어회화 스터디 서비스를 개발하면서 부하 테스트를 위해 클라우드 환경에 필요한 서비스들을 컨테이너 환경으로 실행했다.클라우드 서비스는 Naver cloud platform의 서비스들을 이용했다. 🛠️ 테스트 환경 & 시나리오서버 스펙CPU -> 2EAMemory -> 8GBnGrinder로 테스트전체 모임 조회 API 호출 -> 50만 건의 데이터Vuser 1 부터 늘려가며 테스트Run count는 1로 고정 📌 Vuser 1로 테스트50만 건의 데이터를 조회하는 데 몇 번 테스트한 결과 평균적으로 7,000ms 정도가 걸렸다. 📌 Vuser 4로 테스트동일하게 몇 번 테스트 해본 결과 평균적으로 29,000ms 정도가 걸렸다. 📌 Vuser 10으로 테스트Vuser를 10으로 테스트하니 Ng..
이번 포스팅에서는 VPC에 이어 Subnet에 대해 이야기를 해보고자 한다. 📌 Subnet은 VPC를 더 작은 범위로 나눈 것을 말합니다. Subnet은 VPC를 더 작은 범위로 나눈 것이라 이해할 수 있다.앞선 포스팅에서 VPC는 private network라고 이야기를 했다. private network인 VPC는 어떻게 외부와 통신할까? 📌 VPC가 private network임에도 외부와 통신할 수 있는 이유 VPC는 방공호와도 같다고 했다. 하지만, 외부와의 통신을 통제할 수 있는 방공호이다. 즉, 외부로부터 내부를 기본적으로 보호하지만, 방공호의 허가 하에 외부와 통신이 가능하다. 이것을 가능하게 해주는 것은 IGW와 public subnet이다. IGW는 Internet gatewa..

🧑💻 이번 포스팅에서는 VPC에 대해 이야기를 해보고자 한다. 아래 첨부한 사진은 네이버 클라우드 플랫폼인 ncp에서 서버를 생성하기 위해 필수적으로 생성되어야 하는 VPC를 생성하는 페이지이다. 📌 VPC가 무엇일까?? VPC는 Virtual private cloud의 약어로서 클라우드 내에서 사용자만의 독립적이고 격리된 네트워크 환경을 이야기한다. 😲😲 쉽게 비유해서 이야기하면 VPC는 방공호라고 표현할 수 있다. 외부로부터 내부를 보호하고, 내부에서 받아주지 않는 이상 외부에서 내부로 들어올 수 있는 방법이 없다는 것이 VPC의 역할과 특징과 아주 유사하다고 생각하기 때문이다. 즉, VPC는 클라우드 제공자(ncp를 포함해 aws, ms azure, gcp정도! 더 있는지는 모른다)가 운..
이번 포스팅에서는 Stream API에 대해서 이야기해보고자 한다. 📌 Stream이 무엇일까? 스트림은 데이터의 연속된 흐름을 이야기하는데, 연속된 데이터에 대해 어떠한 연산을 수행시키기 위한 인터페이스이다.연속된 데이터에 대해 연산을 수행시키는 것이기 때문에 리스트, 맵, 배열 같은 데이터 컬렉션을 처리할 때 사용된다. 📌 Stream은 어떤 연산들을 수행할까? 스트림은 연속된 데이터를 필터링, 매핑, 정렬, 집계 등의 연산을 수행한다. 스트림에는 중간 연산과 종료 연산이 있고, 이들은 각각 다른 역할들을 맡고 있다. 💡 중간 연산이 수행하는 역할스트림을 변환해서 새로운 스트림으로 반환하는 역할을 한다. 그 역할에는 filter(), map(), sorted(), limit() 등 여러 가지..