Java
-
선착순 쿠폰 서비스를 기획, 구현 중이다. 하지만 혼자서 접속을 해서 동시 접속자의 상황을 재연하기에는 무리가 있다. 마우스를 잡은 손은 하나니까! 그렇기에 고민하던 중, Locust 에 대해 알게 되었고 동시 접속을 테스트하기에 적합할 뿐만 아니라 성능에 대한 테스트도 가능하다는 것을 알게 되었다. 지금부터 알아보자. 🟢 LocustLocust는 Python으로 작성된 오픈소스 부하테스트 도구이다. Locsut를 사용하면 분산 시스템에서 여러 사용자를 시뮬레이션하여 웹 애플리케이션의 성능을 측정할 수 있다. 또한 매우 사용하기 쉽고 확장성이 뛰어나며, 사용자 시나리오를 코드로 작성할 수 있어 유연성이 높고, 대시보드를 통해 실시간으로 테스트 결과를 모니터링 할 수 있어 테스트 중에 성능 이슈를 발견..
[Spring] 성능 테스트 ? Locust로! with Docker선착순 쿠폰 서비스를 기획, 구현 중이다. 하지만 혼자서 접속을 해서 동시 접속자의 상황을 재연하기에는 무리가 있다. 마우스를 잡은 손은 하나니까! 그렇기에 고민하던 중, Locust 에 대해 알게 되었고 동시 접속을 테스트하기에 적합할 뿐만 아니라 성능에 대한 테스트도 가능하다는 것을 알게 되었다. 지금부터 알아보자. 🟢 LocustLocust는 Python으로 작성된 오픈소스 부하테스트 도구이다. Locsut를 사용하면 분산 시스템에서 여러 사용자를 시뮬레이션하여 웹 애플리케이션의 성능을 측정할 수 있다. 또한 매우 사용하기 쉽고 확장성이 뛰어나며, 사용자 시나리오를 코드로 작성할 수 있어 유연성이 높고, 대시보드를 통해 실시간으로 테스트 결과를 모니터링 할 수 있어 테스트 중에 성능 이슈를 발견..
2024.05.23 -
간혹 비즈니스 로직이나 스케줄러 + 페이지 이렇게 2개의 프로젝트를 구현해야 하는 경우가 생기곤 한다. IntellJ 에서 각각을 실행시키고 관리도 별도로 진행해야 하기 때문에 항상 번거로움이 생긴다. 이를 효과적으로 관리하고 추후에도 다른 용도로도 도움이 될 것 같아, 현재 진행하는 프로젝트는 멀티 모듈로 구현하고 이 과정을 기록한다. 🟢 멀티 모듈Spring Boot에서 멀티 모듈 프로젝트는 하나의 큰 프로젝트를 더 관리하기 쉽고 모듈화된 여러 하위 프로젝트로 나누는 것을 의미한다. 이 접근법은 각 모듈이 독립적으로 개발되고 관리될 수 있도록 해서, 대규모 애플리케이션의 복잡성을 줄이고 유지보수를 용이하게 만들 수 있다. 각 모듈은 특정 비즈니스 로직이나 데이터베이스 작업, 서비스 API 등을 처리..
[Spring] Spring Boot 에서 멀티 모듈 구현간혹 비즈니스 로직이나 스케줄러 + 페이지 이렇게 2개의 프로젝트를 구현해야 하는 경우가 생기곤 한다. IntellJ 에서 각각을 실행시키고 관리도 별도로 진행해야 하기 때문에 항상 번거로움이 생긴다. 이를 효과적으로 관리하고 추후에도 다른 용도로도 도움이 될 것 같아, 현재 진행하는 프로젝트는 멀티 모듈로 구현하고 이 과정을 기록한다. 🟢 멀티 모듈Spring Boot에서 멀티 모듈 프로젝트는 하나의 큰 프로젝트를 더 관리하기 쉽고 모듈화된 여러 하위 프로젝트로 나누는 것을 의미한다. 이 접근법은 각 모듈이 독립적으로 개발되고 관리될 수 있도록 해서, 대규모 애플리케이션의 복잡성을 줄이고 유지보수를 용이하게 만들 수 있다. 각 모듈은 특정 비즈니스 로직이나 데이터베이스 작업, 서비스 API 등을 처리..
2024.05.22 -
다양한 알고리즘을 접하며 우선순위 큐를 종종 사용하곤 한다. 항상 정렬된 상태를 유지하고는 있는데 이게 어떠한 방식으로 돌아가는 지 파악하기 위해 이 글을 작성한다. 우선순위 큐와 관련된 힙에 대한 내용도 담아보자. 🟢우선순위 큐 (PriorityQueue)큐(Queue)는 먼저 들어오는 데이터가 먼저 나가는 FIFO(First In First Out) 형식의 자료구조이다. 우선순위 큐(Priority Queue)는 먼저 들어오는 데이터가 아니라, 우선순위가 높은 데이터가 먼저 나가는 형태의 자료구조이다.우선순위 큐는 일반적으로 힙(Heap)을 이용하여 구현한다 💡 힙(Heap)이란 ?힙(Heap)은 우선순위 큐를 위해 고안된 완전이진트리 형태의 자료구조이다. 여러 개의 값 중 최댓값 또는 최솟값을 ..
[Java] 우선순위 큐의 우선순위는 어떻게 지정할 수 있는가다양한 알고리즘을 접하며 우선순위 큐를 종종 사용하곤 한다. 항상 정렬된 상태를 유지하고는 있는데 이게 어떠한 방식으로 돌아가는 지 파악하기 위해 이 글을 작성한다. 우선순위 큐와 관련된 힙에 대한 내용도 담아보자. 🟢우선순위 큐 (PriorityQueue)큐(Queue)는 먼저 들어오는 데이터가 먼저 나가는 FIFO(First In First Out) 형식의 자료구조이다. 우선순위 큐(Priority Queue)는 먼저 들어오는 데이터가 아니라, 우선순위가 높은 데이터가 먼저 나가는 형태의 자료구조이다.우선순위 큐는 일반적으로 힙(Heap)을 이용하여 구현한다 💡 힙(Heap)이란 ?힙(Heap)은 우선순위 큐를 위해 고안된 완전이진트리 형태의 자료구조이다. 여러 개의 값 중 최댓값 또는 최솟값을 ..
2024.05.02 -
Intro 알고리즘을 풀이하며 정적 변수, static 을 많이 사용하곤 한다. 이에 대한 정확한 의미에 대해 알아보고 분석해 보고자 글을 작성한다. 🟢 정적(static)자바에서 static 키워드는 클래스 레벨의 변수나 메소드, 블록을 정의할 때 사용된다. 이는 인스턴스 생성 없이도 접근 가능하며, 모든 인스턴스에서 공유된다. static 변수는 프로그램이 시작할 때 메모리에 할당되고 프로그램이 종료될 때까지 유지된다. 왜냐하면 static 멤버는 클래스가 로드될 때 메모리의 메소드 영역에 할당되기 때문이다. 이는 모든 인스턴스가 공유하는 특성 때문에 유용하게 사용될 수 있다. 예를 들어, 어떤 클래스의 인스턴스들이 공통적으로 사용해야 하는 값을 static 변수로 선언할 수 있다. 하지만, sta..
[Java] 정적(static) 이란 무엇인가Intro 알고리즘을 풀이하며 정적 변수, static 을 많이 사용하곤 한다. 이에 대한 정확한 의미에 대해 알아보고 분석해 보고자 글을 작성한다. 🟢 정적(static)자바에서 static 키워드는 클래스 레벨의 변수나 메소드, 블록을 정의할 때 사용된다. 이는 인스턴스 생성 없이도 접근 가능하며, 모든 인스턴스에서 공유된다. static 변수는 프로그램이 시작할 때 메모리에 할당되고 프로그램이 종료될 때까지 유지된다. 왜냐하면 static 멤버는 클래스가 로드될 때 메모리의 메소드 영역에 할당되기 때문이다. 이는 모든 인스턴스가 공유하는 특성 때문에 유용하게 사용될 수 있다. 예를 들어, 어떤 클래스의 인스턴스들이 공통적으로 사용해야 하는 값을 static 변수로 선언할 수 있다. 하지만, sta..
2024.04.29 -
모던 php 를 사용할 때는 다양한 타입을 지원했고 따로 명시해 줄 필요도 없었다. Java를 다루면서 데이터 형식을 명확히 해야하고 이에 대한 규제가 정확했다. 이에 대해 정확히 알아보고자 이 글을 작성한다.🟢 제네릭(Generic)제네릭(Generic)는 '일반적인', ' 데이터 타입을 일반화함'이라는 뜻이다. 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시 미리 지정한다고 이해할 수 있다. 우리가 어떠한 자료구조를 사용한다고 가정해보자, List, Queue, LinkedList 와 같은 것들. String 타입 뿐만 아니라 Integer 타입도 지원하고 싶은 경우에 타입 별로 클래스나, 변수들을 생성하진 않을 것이고 이는 비효율적이다. 이러한 문제를 해결하기 위해 우리는 제네릭이라는 것..
[Java] 제네릭(Generic) 은 무엇인가모던 php 를 사용할 때는 다양한 타입을 지원했고 따로 명시해 줄 필요도 없었다. Java를 다루면서 데이터 형식을 명확히 해야하고 이에 대한 규제가 정확했다. 이에 대해 정확히 알아보고자 이 글을 작성한다.🟢 제네릭(Generic)제네릭(Generic)는 '일반적인', ' 데이터 타입을 일반화함'이라는 뜻이다. 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시 미리 지정한다고 이해할 수 있다. 우리가 어떠한 자료구조를 사용한다고 가정해보자, List, Queue, LinkedList 와 같은 것들. String 타입 뿐만 아니라 Integer 타입도 지원하고 싶은 경우에 타입 별로 클래스나, 변수들을 생성하진 않을 것이고 이는 비효율적이다. 이러한 문제를 해결하기 위해 우리는 제네릭이라는 것..
2024.04.26 -
인터페이스를 사용하는 이유는 다양하다. 그치만 내가 어떻게 답변할 수 있을 것인가 Intro 다른 언어에서도 인터페이스를 사용해본 경험이 있지만Java 를 공부하는데 있어서 어떤 방식으로 실행되고 그에 사용되는 것은 무엇인지, 그 기반에 대해 알아야 더욱 이해에 대한 깊이를 더 할 수 있을 것 같다는 생각이 들었다. 하나하나 알아보자. 🟢 인터페이스(interface)자식 클래스가 여러 부모 클래스를 상속받을 수 있다면, 다양한 동작을 수행할 수 있다는 장점을 가지게 될 것이다. 하지만 클래스를 이용하여 다중 상속을 할 경우, 메소드 출처의 모호성 등 여러가지 문제가 발생할 수 있어 자바에서는 클래스를 통한 다중 상속은 지원하지 않는다. 하지만 다중 상속의 이점을 버릴 수는 없기에 자바에서는 인터페이..
[Java] Java 에서 인터페이스는 왜 쓰는 것일까인터페이스를 사용하는 이유는 다양하다. 그치만 내가 어떻게 답변할 수 있을 것인가 Intro 다른 언어에서도 인터페이스를 사용해본 경험이 있지만Java 를 공부하는데 있어서 어떤 방식으로 실행되고 그에 사용되는 것은 무엇인지, 그 기반에 대해 알아야 더욱 이해에 대한 깊이를 더 할 수 있을 것 같다는 생각이 들었다. 하나하나 알아보자. 🟢 인터페이스(interface)자식 클래스가 여러 부모 클래스를 상속받을 수 있다면, 다양한 동작을 수행할 수 있다는 장점을 가지게 될 것이다. 하지만 클래스를 이용하여 다중 상속을 할 경우, 메소드 출처의 모호성 등 여러가지 문제가 발생할 수 있어 자바에서는 클래스를 통한 다중 상속은 지원하지 않는다. 하지만 다중 상속의 이점을 버릴 수는 없기에 자바에서는 인터페이..
2024.04.25 -
Java 의 실행방식과 동작원리, 그에 기반이 되는 JVM 에 대해 파헤쳐보자. Intro Java 를 사용는데 있어서 어떤 방식으로 실행되고 그에 사용되는 것은 무엇인지, 그 기반에 대해 알아야 더욱 이해에 대한 깊이를 더 할 수 있을 것 같다는 생각으로 이 글을 작성한다. JVM, Java Virtual Machine jvm 을 탐구하기 이전에 가상화에 대해 먼저 알아두면 좋을 것 같아서 정리했다. 가상화 (Virtualization) 란 컴퓨터 리소스의 추상화, 물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호작용 하는 방식으로 감추는 기술이다. 💡가상머신, 하이퍼바이저, 컨테이너 가상머신(가상화 라는 용어 사용) - 단일 하드웨어에 여러 컴퓨팅 환경을 만..
[Java] JVM 이란Java 의 실행방식과 동작원리, 그에 기반이 되는 JVM 에 대해 파헤쳐보자. Intro Java 를 사용는데 있어서 어떤 방식으로 실행되고 그에 사용되는 것은 무엇인지, 그 기반에 대해 알아야 더욱 이해에 대한 깊이를 더 할 수 있을 것 같다는 생각으로 이 글을 작성한다. JVM, Java Virtual Machine jvm 을 탐구하기 이전에 가상화에 대해 먼저 알아두면 좋을 것 같아서 정리했다. 가상화 (Virtualization) 란 컴퓨터 리소스의 추상화, 물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호작용 하는 방식으로 감추는 기술이다. 💡가상머신, 하이퍼바이저, 컨테이너 가상머신(가상화 라는 용어 사용) - 단일 하드웨어에 여러 컴퓨팅 환경을 만..
2024.04.23 -
제목 그대로 Spring Boot 에서 Redis 를 사용하여 성능을 개선해본다. 성능을 개선하기 위해 redis 를 선택한 이유와 주의할 점, spring boot에서 사용하는 방법에 초점을 두며 ⛅️ Intro간단한 구글링만 해봐도 'Redis로 캐싱, 성능 개선' 과 같은 글을 많이 볼 수 있다. 이번 시간을 통해 redis 를 사용하는 이유, 주의할 점, redis 의 특징과 다양한 활용법에 대해 정리하고자 한다. 그 전에 Redis 에 대해 정리한 글이 있으니 참고하면 좋을 것 같다. Redis란 ?Redis란 ? 선착순 이벤트를 진행하는데 선착순의 기준을 무엇으로 잡을 것이냐 라는 질문을 받았다. 이러한 이벤트를 진행할 때 당연히 의도한 무언가가 생성된 시간을 기준으로 하면 되지 않냐seun..
[Spring] Redis 로 성능개선 with Spring Boot제목 그대로 Spring Boot 에서 Redis 를 사용하여 성능을 개선해본다. 성능을 개선하기 위해 redis 를 선택한 이유와 주의할 점, spring boot에서 사용하는 방법에 초점을 두며 ⛅️ Intro간단한 구글링만 해봐도 'Redis로 캐싱, 성능 개선' 과 같은 글을 많이 볼 수 있다. 이번 시간을 통해 redis 를 사용하는 이유, 주의할 점, redis 의 특징과 다양한 활용법에 대해 정리하고자 한다. 그 전에 Redis 에 대해 정리한 글이 있으니 참고하면 좋을 것 같다. Redis란 ?Redis란 ? 선착순 이벤트를 진행하는데 선착순의 기준을 무엇으로 잡을 것이냐 라는 질문을 받았다. 이러한 이벤트를 진행할 때 당연히 의도한 무언가가 생성된 시간을 기준으로 하면 되지 않냐seun..
2024.02.25