오늘의 공부 오늘은 JMeter 같은 성능 테스트 툴에 대해 알아보고 공부 해보았다. 들을 비교하겠습니다. 특징 / 도구 Apache JMeter Gatling Locust 언어 Java Scala Python UI GUI 기반 코드 기반 코드 기반 지원 프로토콜 HTTP, JDBC, FTP, SOAP 등 다양함 HTTP, JMS, JDBC 주로 HTTP 확장성 플러그인으로 확장 가능 확장성이 뛰어남 (Akka 기반) 사용자 정의 코드로 확장 가능 분산 테스팅 가능 가능 (하드웨어에 의존) 가능 결과 분석 다양한 차트 및 리포트 제공 HTML 리포트 제공 간단한 웹 UI 및 CSV 리포트 성능 메모리 사용량이 다소 높음 경량하고 빠름 경량하고 유연함 스크립트 생성 레코딩 기능 제공 코드 작성 필요 코드 ..
어떤 문제가 생겼나요? STOMP 메세징 프로트콜을 이용한 프로젝트에 필요한 채팅 서비스 로직을 구성하고 Test Code 를 만들었다. 이제 TestCode 를 작성할때 웹 소켓 연결을 되었지만, 채팅을 주고 받는 Test Code 작성에 문제가 생겼다. 아래의 코드를 보면 응답 받을때 계속 null 로 체크 된다. 이해를 할수가 없다.. 참고로, 웹 소켓 테스트는 통합 테스트로 진행하였다. @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) class ChatControllerTest { private static final String WEBSOCKET_URI = "http://localhost:{port}/chat..
Load Data 란? 파일 그 자체로 DB 테이블에 데이터를 넣는것이다. 아래의 속도 차원이 다르다. 속도: 대량의 데이터를 빠르게 로드할 때 "LOAD DATA"는 "INSERT"보다 훨씬 빠릅니다. "LOAD DATA"는 대부분의 데이터베이스 시스템에서 최적화되어 있어, 대량의 데이터를 빠르게 삽입할 수 있습니다. 공식 사이트 : https://dev.mysql.com/doc/refman/8.0/en/load-data.html LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO TABLE tbl_name [PARTITION (partition_name [, partition_name] ...)..
Mysql, PostgreSQL 에 각각 2,073,677 건의 데이터를 넣고 테스트를 진행하였다. DB 성능 분석을 할것이다. 똑같은 환경 똑같은 테스트코드로 진행할 예정이다. 또한, hibernate 에서 제공해주는 성능 체크를 할 예정이고, 프로덕션 코드가 아닌 단지 성능을 체크하기 위해 만들었기 때문에, hibernate 선택하여 진행하였다. git hub 저장소 : https://github.com/final-idea-rush/db-performance-check 테이블 구조 데이터는 1차 가공을 통해 사용하였습니다. 데이터 출처 : https://www.data.go.kr/data/15096283/standard.do 동일하게 2,073,677 건의 데이터로 진행할 예정이다. 전체 조회 Mys..
오늘의 공부 오늘은 실시간 경매 사이트 프로젝트 MVP 기능인 아이디어 경매글 전체, 단건 조회를 맡고 개발하였다. 테스트코드도 같이 작성하여 이번에 한번더 Mock 에 대하여 찾아보고 공부하였다. 또한 Docker Hub VS AWS ECR 에 대해 논의를 한적이 있다. 개인적으로는 Docker Hub 를 써봤지만 이번에 처음으로 AWS ECR 에 적용하기로 하였다. 이유는 우리 프로젝트에서는 AWS 말고 다른 플랫폼 이용할 이유가 없었기 때문에 AWS 의 CloudWatch 로 로그와 이벤트를 모니터링을 한번에 할수 있다는 장점을 가지고 이야기를 하였다. 서로 의견을 나눠본 결과 AWS ECR 을 쓰자는 의견이 나와 Docker img 를 ECR 에 저장하는 공간으로 쓰기로 하였다. 이후에는 컨테이너..
AWS ECR 이란? AWS 에서 관리해주는 도커 이미지를 관리해주고 pull, push 해줄수 있는 서비스이다. 비슷한 서비스인 Docker Hub가 있다. 하지만 장단점이 존재하고 어떠한 서비스에 적용할것인지는 관련 회의를 통해 결정해야 할것 같다. 왜냐하면 AWS ECR 를 쓴다면 AWS 의존성이 높아진다는 단점도 있다. 하지만 AWS가 관리하기 때문에 비교적 안전하다고 할수 있을것 같다. AWS ECR vs Docker Hub 항목 Docker Hub AWS ECR 장점 가용성 전세계적으로 사용 가능 AWS 리전 내에서 사용 가능 통합 Docker CLI와 잘 통합됨 AWS 서비스 및 인증(예: IAM)과 통합 가격 무료 계층 제공 사용량 기반 비용; 데이터 전송 및 저장 비용 발생 자동 빌드 G..
Spring 에 interface 의존성 주입에 대해 알아보자! 당연하지만 실제로 테스트를 해보고 싶었다. 나는 간단하게 Controller 를 Test 로 만들고 TestInterface 와 구현체인 Test1 를 만들었다. 아래의 코드다. @RestController @RequiredArgsConstructor public class Test { private final TestInterface testInterface; @GetMapping("/t") public String test(){ return testInterface.getMsg(); } } public interface TestInterface { String getMsg(); } @Component public class Test1 i..
오늘의 공부 프로젝트 2주동안 너무 바빠서 블로그 쓸 틈이 없었다... 프로젝트 개발하고 있는 와중 잠이 부족하여도 열심히 하였고, 블로그 쓸 시간 자체가 없었다. 하지만 이제 마지막 파이널 프로젝트인만큼 개발하면서 정리를 하자고 한다. 현재는 Jira 로 관리하면서 Slack 으로는 공적이 대화와 카톡으로 사적인 대화를 나눠서 현재 진행하고 있고 기획단계이다. 챌린저팀인 만큼 성능을 극한으로 끌어올릴것이다. 내일은? 내일부터 기획하고 여러 기술들을 조사하고 블로그를 쓸 예정이다. 또한, SA 제출이 끝났음으로 어떠한 기술을 넣어볼까 생각하고 토론하여 결정하는 시간을 갖고 실제로 내일 부터는 개인 개발 공부를 조금씩 하여 적용해보아야겠다.
CI / CD 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법으로 지속적인 통합, 서비스 제공, 배포 라고 한다. 일명 말하는 통합 지옥을 해결하기 위한 솔루션이라고 한다. 해당 구축 사레를 일반적으로 CI/CD 파이프라인이라고 부른다. GithubAction 을 통한 AWS EC2 에 배포 / Jenkins 위와 같이 Github 에 올리게 되면 Github Action 이 S3 에 넣어놓고 CodeDeploy 를 통해 EC2 에 배포하게 된다. 위와 같은 방법으로 시도 해봤지만 다른 방법도 많이 있다. Docker 를 이용하여 할수 도 있고, Jenkins 를 통해 EC2 서버를 한대 더 만들어서 관리 할수 있다. ( 꼭 해보고 싶다 ) 하지만 처음으로 구성..
오늘의 공부 오늘은 저번에 207만건의 상가 데이터가 존재하여 그 데이터를 가지고 궁금한점이 있어서 QueryDSL 를 이용해서 시간이 얼마나 걸리는지 테스트를 해보았다. 실제로 207만원 전체 쿼리문을 날리면 14.3955214 초 가 나오지만, 속도를 좀더 빠르게 하기 위해 불필요한 데이터는 조회를 안했다. 2.6230503 초 그렇게 하니 속도가 14 -> 2 초 로 바뀌게 되었다. 너무 신기하였다. 이렇게 동적쿼리로 내가 원하는 데이터들로만 뽑아 오면 좋지 않을까 생각하고 있고, 또한, 고민을 해보니 밑에 코드 처럼 가져 온다면, dto 들이 많아 질텐데 이게 맞는건가. 그런 생각을 하였지만 결국엔 나중에 매니저님께 여쭤보는 시간을 갖게 되면 그때 여쭤봐야겠다! + 개인적인 생각 - (아직 안해봄..