본문 바로가기

전체 글

(42)
어떻게 JVM은 메모리를 관리할까 1. GC란? C 와 같은 언어로 프로그래밍을 한다면 메모리를 할당 후, 사용하지 않는 대상에 대해서는 메모리 해제를 해주어야만 메모리 누수현상을 방지할 수 있습니다. 하지만 Java를 포함한 많은 언어에서는 메모리를 해제하는 작업을 해주지 않는데도 메모리 부족현상 없이 잘 작동합니다. 그 이유는 GC(Garbage Collector) 덕분입니다. GC는 메모리 관리기법중 하나로, 프로그램이 동적으로 할당했던 메모리 영역(Heap 영역) 중 필요 없게된 영역을 알아서 해제 해주는 것입니다. 1 - 1 GC의 장단점 장점 GC가 메모리를 관리해주기 때문에 개발자가 메모리 걱정 STOP 메모리 누수 STOP 단점 GC 작업은 순수 오버헤드 (STOP THE WORLD) 개발자는 언제 GC가 작동하는지 모른다..
쿠폰 발급 동시성 제어 1. 문제 정의 연세대학교 골프동아리 웹사이트는 회원들의 참여 유도를 위해 무료 커피 쿠폰 , 스크린 골프 할인 쿠폰등을 지급하고 있습니다. 이러한 선착순 쿠폰 이벤트의 경우 순간적으로 사용자가 몰려 쿠폰 발급의 동시성을 제어하는 것이 관건이라고 할 수 있습니다. 동시성을 고려하지 않은 채 코드를 작성한 후 어떤 것이 문제가 되는지 살펴보겠습니다. public void createCoupon(Long couponId, Long userId, Long quantity) { Coupon coupon = couponRepository.findById(couponId).orElseThrow(); coupon.decrease(quantity); couponRepository.save(coupon); userCou..
Spring 처리율 제한 장치 (Rate Limiter) 1. 문제 정의 현제 연세대학교 골프동아리 웹사이트는 t2.micro에서 운영되고 있습니다. 사용할 수 있는 CPU는 한정적이기 때문에, 동아리 지원자가 몰리는 지원 마지막날에 대비해야 할 필요가 있습니다. 이번 포스팅에서는 t2.micro 에서 현재 웹 사이트가 버틸 수 있는 vUser의 지원서 작성 한계에 대해 알아보고, 어떻게 문제를 해결할 수 있는지 알아보도록 하겠습니다. 2. 트래픽 한계점 평균 동아리 지원자 200여명을 기준으로, vUser 200을 기준으로 테스트를 해보겠습니다. CPU 사용률이 50%에 이르며, 218번의 트랜잭션이 발생했지만, 이 중 성공한 트랜잭션은 70개에 불과합니다. 즉 트래픽이 몰릴 경우 테스트의 30%만이 성공하는 것을 확인할 수 있습니다. 이러한 에러가 발생할 ..