본문 바로가기
반응형

개발/ETC3

IntelliJ 를 활용하여 KSP(Kotlin Symbol Processing API) 디버깅 하는방법 Terminal 을 이용하여 아래 명령어를 실행합니다. ./gradlew build --no-daemon -Dorg.gradle.debug=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.daemon.jvm.options="-Xdebug,-Xrunjdwp:transport=dt_socket\,address=5005\,server=y\,suspend=y" 위의 명령어를 실행하면 아래와 같은 상태가 됩니다. IntelliJ 에서 Run > Attach to Process 를 클릭합니다 정상적으로 실행됐다면 아래와 같은 항목이 있을겁니다. 클릭해줍니다. 브레이크 포인트에서 정상적으로 멈추는 것을 확인할 수 있습니다. 2022. 3. 1.
Disk I/O 부하인데 메모리 증설을 한다고? 서비스를 운영하다보면 시스템에 부하가 발생하는 경우가 존재한다. 부하의 종류에는 다양하게 있는데 이번 글에서는 I/O 부하에 관련된 주제에 대해 다뤄보도록 하겠다. 필자는 Disk I/O 부하가 발생한다면 HDD → SSD 업그레이드를 하는것만이 해결방법이라고 생각했었다. 그러던 도중 “대규모 서비스를 지탱하는 기술” 이라는 책을 읽으면서 I/O 부하가 발생할 때 메모리를 증설하는것도 하나의 방법이 될 수 있다는 것을 알게되었다. 그렇다면 어떠한 원리로 Disk I/O 부하일 때 메모리를 늘리는 것이 부하를 줄이는 방법이 되는지 알아보겠다. 이 방법은 OS 캐시와 관련이 있다. (이 글은 Linux 를 기준으로 작성되었다.) OS 는 페이지 캐시라는 캐시구조를 가지고 있다. > 페이지 캐시란? OS 가 .. 2021. 12. 19.
MSA 환경에서 분산 트랜잭션 처리하는 방법 공부중인 주니어개발자가 작성하는 글입니다. 틀린 내용이 존재할 수 있으며 무조건적인 신뢰보다는 참고정도만 해주시면 감사하겠습니다. 틀린부분을 지적해주셔도 좋습니다. MSA 환경에서는 트랜잭션 처리가 중요하면서 까다롭습니다. MSA 환경에서는 각 서비스마다 저장소에 대한 접근권한을 따로 가지고 있을 확률이 높습니다. 이것이 무슨뜻인지 풀어서 설명해보겠습니다. User Service 와 Point Service 가 있다고 가정해보겠습니다. User Service 에서 사용하는 저장소는 User Service 에서만 접근할 수 있습니다. 또한, Point Service 에서 사용하는 저장소는 Point Service 에서만 접근할 수 있습니다. User Service 와 Point Service 가 엮여있는 .. 2021. 10. 4.