본문 바로가기
728x90

전체 글286

로직 처리 순서와 방식에 따른 속도 차이 비교 리팩터링 미션을 수행하던 중 하나의 리팩터링 지점을 여러 방식으로 리팩터링 할 수 있다는 생각을 하게 되었고, 이 방식들의 차이가 프로그램 실행 속도에 얼마나 영향을 미치는지 궁금증이 들었다. 궁금증이 발생한 부분은 다음과 같다. 1. 객체 상태를 변경해야 할 때 단순 setter를 사용하는 것과 새로운 객체를 만드는 방식에서 속도 차이가 얼마나 발생하는 가. 2. 디비 조회를 요구하는 검증 로직과 디비 조회가 발생하지 않는 검증 로직을 모두 수행할 때, 검증 로직 순서를 바꾸는 것만으로 로직 실행 시간을 줄일 수 있나. 비교에 사용될 코드 이번 실험(?)에서 사용될 코드는 위에서 언급한 리팩터링 미션에 사용된 코드이다. 상품을 주문할 수 있는 테이블이 있을 때, 해당 테이블에 게스트 존재 여부를 바꿔주.. 2022. 10. 29.
Rolling deployment를 위한 nginx 설정 프로젝트를 진행하면서 무중단 배포를 적용하기 위해 이리저리 찾아보면서 Nginx를 활용해 로드밸런싱을 해야 한다는 것을 알게 되었다. 그리고 이번 프로젝트에 적용하기 가장 적합해 보이는 Rolling 배포 방식을 간단히 구현해 보았다. 현재 AWS EC2를 사용 중이기 때문에 Blue-green을 사용할 거면 인스턴스를 종료하고 시작하는 방법이 필요하다. 이 부분을 자동화시키고 싶어서 AWS 람다를 고려했으나 람다 권한이 없어서 적용하지 못했다. 결국 추가 인스턴스가 필요 없는 Rolling이 가장 적합하다 판단했다. 간단한 서버 세팅 Nginx 설정이 중점이므로 express로 정말 간단한 서버 두대만 띄웠다. 코드는 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 .. 2022. 10. 3.
무중단 배포 전략 많은 서비스 기업들이 짧은 주기로 배포를 진행하고 있다. 짧은 주기 배포를 통해 유저의 피드백을 빠르게 받고 문제를 빠르게 수정한다. 또 한, 사용자에게 제품의 가치를 빠르게 전달한다. 이런 상황에서 서비스 중단을 요구하는 중단 배포를 사용하면 다운 타임이 발생하고 고객 경험을 해치는 요소가 될 수 있다. 예컨대 Big Bang Deployment는 애플리케이션의 상당 부분을 한 번에 배포한다. 그 때문에 광범위한 개발과 상당한 테스트를 요구한다. 한 번에 모든 변경을 배포하기 때문에 배포 중에는 서비스를 사용할 수 없으며 문제 발생으로 인한 롤백 시 많은 비용이 부과된다. 광범위한 개발은 릴리즈 주기를 길게 만들고 롤백 비용이 크다는 것은 배포에 부담을 안긴다. 즉, 짧은 주기 배포로 고객의 요구를 빠.. 2022. 10. 3.
Servlet 해당 글은 tomcat 10.0.23에서 사용하고 있는 servlet 5.0을 기준으로 작성되었습니다. 서블릿과 CGI WS를 사용하면 정적인 파일을 응답할 수 있지만 동적인 콘텐츠 생성하거나 사용자가 입력한 데이터를 저장할 수 없다. 이 문제를 해결하기 위해 CGI가 등장했고 자바 진영에서는 Servlet이 등장했다. 서블릿은 CGI에 비해 다음과 같은 이점을 가진다. 1. CGI는 프로세스 단위로 실행된다. 이 때문에 요청당 하나의 스레드를 사용하는 서블릿에 비해 서버에 더 많은 부하를 준다. 2. 서블릿은 자바로 작성되었고 JVM상에서 동작하기 때문에 플랫폼에 의존적이지 않다. 3. 자바에서 구현된 표준 라이브러리들을 그대로 사용해 DB에 접근하거나 소켓을 통해 다른 소프트웨어와 통신할 수 있다. .. 2022. 9. 10.
728x90