[Gatling] Gatling 성능 부하 테스트
2022. 11. 11. 07:59
Open Source/Testing Framework
여러 개발 방법론에서는 개발 중 테스트 코드를 작성하는 것을 권고합니다. 저는 그 방법론을 충실히 따라 기능 단위 테스트 코드를 열심히 작성하고 있습니다. 하지만 프로덕션 환경에 이 코드를 올렸을 때 정상적으로 동작할지 항상 걱정이 들었습니다 . "내가 생각한 것보다 더 많은 요청이 들어오면 애플리케이션은 어떻게 동작할까?" 등 다양한 부하 상황에서 애플리케이션이 어떻게 동작하는지 궁금했습니다. 이 궁금증을 해결하기 위해 Gatling을 활용했습니다. Gatling 이란 Gatling은 오픈소스 부하 테스트 소프트웨어입니다. 개발 pipeline과 지속적으로 통합시킬 수 있는 소프트웨어이기 때문에 개발의 모든 단계에서 다양한 방법으로 테스트가 가능합니다. Gatling은 maven을 통해 실행시킬 수 있..
[Maven] 올인원 Maven
2022. 11. 10. 08:25
Java/Maven
이번 포스팅을 통해 Maven에 대해 더 자세히 이해해보도록 하겠습니다. 저 포함 많은 분들께서는 Maven을 단순히 의존성을 끌어와 라이브러리를 활용하는 정도로만 사용하고 있는데요, Maven의 동작원리를 안다면 이를 더 효과적으로 사용하고 의존성 문제가 생겼을 때 쉽게 해결할 수 있습니다. POM.xml 구조 POM(Project Object Model)은 Maven이 해당 프로젝트를 어떻게 빌드할 것인지 명시하기 위해 사용되는 XML 파일입니다. 개발자 입장에서 자주 보게 되는 속성(attributes) 위주로 설명드리겠습니다. relativePath 부모 pom.xml을 명시할 때(override) 사용하는 속성입니다. 한 단계 위에 있는 디렉터리가 기본 설정입니다. modelVersion XML..
[Debezium] Embedded Debezium Spring Boot 연동
2022. 11. 7. 08:12
Open Source/Debezium
이번 포스팅을 통해서 spring boot와 embedded Debezium을 연동하는 법을 살펴보겠습니다. 코드는 github에서 확인할 수 있습니다. https://github.com/seonwoo960000/spring-boot-embedded-debezium GitHub - seonwoo960000/spring-boot-embedded-debezium Contribute to seonwoo960000/spring-boot-embedded-debezium development by creating an account on GitHub. github.com 설정 pom.xml 4.0.0 org.springframework.boot spring-boot-starter-parent 2.7.5 com.ex..
[Debezium] Debezium 이란?
2022. 11. 6. 20:59
Open Source/Debezium
Debezium은 database에서 발생하는 변경사항을 추적할 수 있는 일종의 Apache Kafka Connect의 source connector입니다. 각각의 connector은 해당 데이터베이스의 CDC(change data capture)와 관련된 기능을 활용해서 변경된 데이터에 대한 정보를 가져옵니다. 성공적으로 commit이 발생한 데이터에 대해서만 변경사항이 전파되기 때문에 실패한 트랜잭션은 고려할 필요가 없다고 합니다. Debezium은 변경사항을 디스크에 저장하기 때문에 데이터의 변경사항을 전달받아야 하는 애플리케이션이 다운되더라도 문제가 없습니다. Change Data Capture이란 데이터의 변경사항을 식별하고 추적할 수 있는 소프트웨어 디자인 패턴입니다. CDC의 목적은 데이터의..
[Database] DBA급 개발자로 - #16 Two-Phase Locking
2022. 11. 6. 10:43
Database/DBA급 개발자로
이번 포스팅에서는 트랜잭션 동시성을 제어할 수 있는 방법인 two phase locking에 대해 살펴보겠습니다. 2PL(Two phase locking)은 데이터베이스의 serializable isolation level을 구현하는데 자주 사용됐던 방식입니다. 2PC(2 Phase Commit)과 2PL 용어가 비슷해서 헷갈릴 수 있는데요, 2PC은 하나의 트랜잭션으로 처리돼야 할 작업이 여러 DBMS 서버를 거쳐야 하는 경우 트랜잭션의 원자성 보장하기 위해 활용하는 프로토콜입니다. 2PL(2 Phase Locking) 2PL는 다수의 트랜잭션이 동시에 실행될 때 conflict serializability를 보장하는 동시성 제어 방법입니다. 2PL의 장점은 conflict serializability..
[Database] DBA급 개발자로 - #15 Concurrency Control
2022. 11. 1. 17:55
Database/DBA급 개발자로
이전 포스팅에 쿼리 처리 비용을 계산해서 최적의 쿼리를 선택하는 방법에 대해 살펴봤습니다. 그리고 DBMS에서 동시에 실행되는 트랜잭션을 어떻게 처리하는지 살펴보겠습니다. Transaction Concurrency Control 트랜잭션의 동시성 처리가 왜 중요할까요? 동시에 실행된 다수의 트랜잭션이 하나의 데이터를 수정할 때 어떻게 데이터의 일관성을 유지할 수 있을까요? 가장 단순한 방법은 한 시점에 하나의 트랜잭션만 데이터에 접근할 수 있도록 하는 방법입니다(예를 들면 데이터에 접근하는 트랜잭션을 순차적으로 실행하는 방식입니다). 하지만 트랜잭션을 순차적으로 실행하면 처리 속도가 줄고 DBMS의 응답 시간이 길어질 수 있습니다. 이를 해결하기 위해서는 데이터의 일관성을 유지하면서도 트랜잭션을 동시에 ..
[Database] DBA급 개발자로 - #14 비용 기반 쿼리 최적화
2022. 11. 1. 17:55
Database/DBA급 개발자로
이전 포스팅에서는 규칙 기반(heuristics / rules) 쿼리 최적화에 대해 살펴봤습니다. 이번 포스팅에서는 비용 기반 쿼리 최적화에 대해 살펴보겠습니다. Cost Model Component 쿼리 수행 비용에는 어떤 항목이 포함되는지 살펴보겠습니다. Physical cost CPU cycle I/O 횟수 RAM 사용량 Logical cost 각 operator에 의해 반환되는 데이터의 크기 여러 operator가 독립적으로 실행될 수 있는지 여부 Algorithm 알고리즘의 복잡도 위의 항목 외에도 다양한 요인에 의해 쿼리를 실행하는 비용에 포함될 수 있습니다. DBMS는 데이터베이스의 통계(statistics)를 통해서 논리적인 비용(logical cost)을 측정할 수 있습니다. DBMS의 ..
[Career] 비전공자가 LINE PLUS 개발자가 되기까지
2022. 10. 29. 12:43
Career/활동
2022.05.07 - [Career] - 비전공자 조종사가 6개월 독학으로 네카라쿠배까지 비전공자 조종사가 6개월 독학으로 네카라쿠배까지 저는 조종사를 양성하는 항공운항학과의 졸업생입니다. 정확히 말해 학생 조종사였고 현재는 라인 플러스 백엔드 개발자입니다. 짧게 요약하자면 저는 4학년 2학기를 남기고 1년 휴학을 했었고, code-run.tistory.com 위 포스팅에서 비전공자로서 라인플러스 개발자가 되기까지의 여정에 대해 소개해드렸는데요, 몇몇 분들께서 구체적으로 어떻게 준비했는지 궁금해하시는 것 같아 이번 포스팅에서는 제가 어떻게 준비했는지 소개드리겠습니다. 자료구조, 알고리즘 취업에 있어 가장 중요하다고 생각합니다. 취업을 위한 최소한의 관문이기에 이 관문을 통과하지 못하면 아무것도 할 수 ..