분류 전체보기

    Spring Bean scope

    Spring Bean scope Spring Bean 스코프란, 스프링 Bean이 앱이 구동되는 동안의 존재할 수 있는 범위를 뜻합니다. 스프링 컨테이너는 빈 객체를 생성하고, 관리하며, 제거하는 것을 담당합니다. 이때 빈 객체의 스코프(scope)를 설정하여 빈 객체의 생명 주기를 제어할 수 있습니다 기본적으로 스프링의 빈은 싱글톤으로 만들어 지지만, 개발자가필요에 의해 빈의 스코프를 지정할 수 있습니다. 스프링에서는 다음과 같은 다섯 가지 스코프를 제공합니다. 스프링 공식 문서 Scope Description singleton (기본값) 스프링 IoC 컨테이너당 하나의 인스턴스만 사용 - 한마디로 앱이 구동되는 동안 하나만 쓴다는 거임 prototype 매번 새로운 빈을 정의해서 사용 request ..

    nGrinder 에러 - Unsupported class file major version 61 해결방법

    로컬 환경의 기본 JDK 버전은 17이였습니다. m1 pro Ventura 13.0.1 JDK 17 (amazon corretto) nGrinder로 groovy 스크립트를 작성하고 Validate를 실행했을 때 다음과 같은 오류를 만났습니다. 2023-04-25 21:57:47,218 ERROR Script error - Error while initialize test runner net.grinder.engine.common.EngineException: Error while initialize test runner at net.grinder.scriptengine.groovy.GroovyScriptEngine.(GroovyScriptEngine.java:71) at net.grinder.scrip..

    nGridner 소개와 설치 방법, 간단 테스트

    NGrinder nGrinder 공식 깃허브 문서 nGrinder란 네이버에서 진행한 오픈 소스 프로젝트로 서버의 부하 테스트를 위한 도구 입니다 The Grinder라는 오픈소스 기반에서 개발. 웹 애플리케이션을 서비스하기 전에 서버가 얼마나 많은 사용자를 수용할 수 있는지 요청을 전송해봄으로써 서버의 성능을 측정해볼 수 있다. 부하테스트는 성능테스트의 일종이지만, 성능테스트랑은 다르다. nGrinder는 다음과 같은 주요 기능을 제공합니다: 스크립트 레코딩: 웹 브라우저에서 사용자 동작을 녹화하여 테스트 스크립트를 생성할 수 있습니다. 분산 테스트: 다수의 에이전트 머신을 사용하여 대규모 테스트를 수행할 수 있습니다. 실시간 모니터링: 테스트 진행 중에 성능 지표를 실시간으로 모니터링할 수 있습니다...

    Java Sealed class 와 Switch

    Sealed class Sealed 클래스/인터페이스 는 상속하거나(extends), 구현(implements)할 클래스를 지정하여 해당 클래스들만 상속/구현이 가능하도록 제한하는 기능입니다. JDK 15부터 추가된 키워드로, 자바 17에 정식으로 확정되었습니다. Sealed Class의 목표 개발자가 어떤 class 또는 interface가 해당 클래스를 상속받는지를 쉽게 알 수 있고 제한할 수 있다. class 또는 interface 작성자가 구현을 담당하는 코드를 제어할 수 있게 한다. superclass 사용을 제한하기 위해 access modifier 보다 더 선언적인 방법을 제공한다. pattern의 철저한 분석을 위한 기반을 제공하여 pattern matching을 지원한다. 사용방법 sup..

    성능 테스트, 부하 테스트, 스트레스 테스트

    프로젝트를 진행하면서 성능 테스트 툴을 알아보고 있습니다, 기능은 만들 수 있지만, 올바르게 동작하는지, 성능은 문제 없는지, 애플리케이션의 성능에 대한 고민과 테스트를 해본적이 없어 관련 학습이 필요하였습니다. 기능의 목적 중 사용자에게 좋은 경험을 주기 위해선 신속하고 안정성이 있어야 합니다. 성능, 부하, 스트레스 테스트의 개념이 언뜻 비슷해 보이지만 세가지의 개념이 다른것을 알게 되었습니다. 개념을 제대로 알지 못하면, 목적에 맞게 진행하는지 알 수 없고 정확한 테스트가 어렵기 때문에 이 개념들을 정리해보려 합니다. 어느(Where) 부분을 테스트 해야 할까요? Application TPS(Transaction Per Second) 응답 시간(Response Time) Middleware Mess..

    Apache JMeter를 사용해보자

    Apache JMeter JMeter 깃허브 웹 어플리케이션 성능 테스트를 툴은 자바 오픈 소스 Apache Bench, Apache JMeter, 네이버에서 Grinder를 이용해서 만든 nGrinder, ,k6, Artillery, Gatling 등등이 있습니다. JMeter와 k6를 비교한 글 Apache JMeter는 서버의 성능 및 부하를 측정할 수 있는 오픈 소스 테스트 도구입니다. JMeter는 순수 Java 애플리케이션 오픈소스이며 서버나 네트워크 또는 개체에 대해 과부하를 시뮬레이션하여 강도를 테스트하거나 다양한 부하 유형에서 전체 성능을 분석하는 데 사용할 수 있습니다. 다음은 Apache JMeter가 가진 특징입니다 다양한 프로토콜/서버를 테스트할 수 있다. 웹 - HTTP, HTT..

    Java CompletableFuture

    CompletableFuture 자바에서 비동기(Asynchronous) 프로그래밍을 지원하는 클래스입니다. Future의 단점을 극복하기 위해 자바8부터 지원되었습니다. Future의 진화된 형태로써 외부에서 작업을 완료시킬 수 있을 뿐만 아니라 콜백 등록 및 Future 조합 등이 가능 CompletableFuture : 완료가능한 Future Future 인터페이스의 단점 외부에서 완료시킬 수 없고, get의 타임아웃 설정으로만 완료 가능 블로킹 코드(get)를 통해서만 이후의 결과를 처리할 수 있음 여러 Future를 조합할 수 없음 ex) 회원 정보를 가져오고, 알림을 발송하는 등 여러 작업을 조합하거나 예외 처리할 수 없음 Future는 외부에서 작업을 완료시킬 수 없고, 작업 완료는 오직 g..

    Java Future, Callable, Executor Concurrent 프로그래밍

    자바에서 지원하는 Concurrent 프로그래밍 관련 클래스들입니다. 멀티 프로세싱 --> ProcessBuilder 사용 멀티 스레드 --> Thread, Runnable, Executors, Callable 등 사용 Thread와 Runnable은 멀티 스레드를 구현하는것을 지원하지만 Thread와 Runnable을 직접 사용하는 방식은 다음과 같은 한계점이 있습니다. 지나치게 저수준의 API(쓰레드의 생성)에 의존함 값의 반환이 불가능 (void type) 매번 쓰레드 생성과 종료하는 오버헤드가 발생 쓰레드들의 관리가 어려움 특히 결과를 반환하도록 추가된것이 Callble과 Future 입니다. Callable과 Runnable의 차이점은 작업의 결과를 받을 수 있다는 사실이다. Future는 비동..

    멍토의 Non-Blocking/Blocking 과 Async/Sync

    10분 테코톡 - 멍토의 Non-Blocking/Blocking 과 Async/Sync 목차 Blocking Vs Non-Blocking Sychronouse Vs Asynchronous 조합 4가지의 경우 정리 Blocking Vs Non-Blocking 제어권 : 제어권은 자신(함수)의 코드를 실행할 권리 같은 것이다. 제어권을 가진 함수는 자신의 코드를 끝까지 실행한 후, 자신을 호출한 함수에게 돌려준다. Blocking 자신의 작업이 진행되다 다른 주체를 호출하면 호출된 주체의 작업을 끝날 때까지 기다렸다가 작업을 다시 시작 제어권을 호출한 함수에게 넘기고 호출한 함수가 일이 끝나면 제어권을 다시 돌려받음 Blocking 예시 직원 : 과장님 여기 작성한 서류입니다. 과장 : 다 읽을 때까지 기다..