클라우드 환경에 내 로컬 DB 연결하기
문제 사항 애플리케이션 서버를 배포한 후, 성능 테스트를 수행하려면 반드시 데이터베이스(DB)가 필요합니다. 하지만 다음과 같은 어려움이 있습니다 RDS를 이용한 성능 테스트: 쿼리 당 비용이 발생하여 예산이 제한적인 상황에서는 적합하지 않습니다. 개발 서버용 EC2에 MySQL 설치: EC2 프리 티어의 1CPU 1GiB 사양으로는 M...
문제 사항 애플리케이션 서버를 배포한 후, 성능 테스트를 수행하려면 반드시 데이터베이스(DB)가 필요합니다. 하지만 다음과 같은 어려움이 있습니다 RDS를 이용한 성능 테스트: 쿼리 당 비용이 발생하여 예산이 제한적인 상황에서는 적합하지 않습니다. 개발 서버용 EC2에 MySQL 설치: EC2 프리 티어의 1CPU 1GiB 사양으로는 M...
컬렉션 프레임워크란 컬렉션 프레임워크는 객체 그룹을 저장하고 관리하기 위한 통합 아키텍처입니다. 이 프레임워크는 List, Set, Queue, Map등의 인터페이스와 그 구현체들 그리고 이들을 다루는 다양한 메소드들로 구성되어 있습니다. ArrayList에서 indexof 메소드는 값 비교를 어떻게 할까 int indexOfRange(Obje...
Collection 인터페이스 자바에서 Set, List, Queue 는 Collection 이라는 인터페이스를 구현하고 있습니다. Collection 인터페이스는 다음과 같이 선언되어 있습니다. public interface Collection<E> extends Iterable<E> Iterable<E>이...
String 생성자 보통 문자열을 만들 때 다음과 같이 생성합니다. String name = "Java"; 하지만 생성자를 이용하여 문자열을 만들 수도 있습니다. 위 사진처럼 여러 생성자가 있는데 그 중에서 가장 많이 쓰이는 생성자는 다음과 같습니다. 왜냐하면 다른 나라는 보통 영어만 사용하지만 우리나라는 한글을 사용하기 때문에 지정해야 할 ...
문제사항 최근 애자일허브 프로젝트는 도커이미지를 만들어 DockerHub에 올리는 방식으로 배포를 하고 있습니다. Dockerfile을 만들어서 GitHub에 올려두고, GitHub Actions로 docker build와 push를 진행하는 방식입니다. 그런데 배포를 할때마다, 매번 빌드 시간이 10분 이상이었고, 코드가 조금만 추가되어도 1분씩...
문제 사항 애플리케이션 로그를 프롬테일을 이용해 로그들을 로키로 push 하는 과정에서 nginx와 system 로그는 제대로 로키가 받아오지만 애플리케이션 로그(ERROR 레벨)는 받지 못하는 상황이 발생했다. 받아오지를 못하고 있다. 먼저 프롬테일 config.yaml은 다음과 같이 작성했다. 문제 해결 시도 1. 로그 확인 먼저,...
Old 영역은 기본적으로 데이터가 가득 차면 GC를 실행합니다. GC 방식은 Serial GC, Parallel GC, Parallel Old GC, Concurrent Mark & Sweep GC(aka CMS), G1 GC, ZGC가 있습니다. Serial GC (-XX: +UseSerialGC) Serial GC는 Young Gener...
약한 세대 가설 (Weak Generational Hypothesis) 자바 가상 머신(JVM)의 메모리 관리 방식에 큰 영향을 준 중요한 개념입니다. 이 가설을 이해하면 다양한 가비지 컬렉션 알고리즘의 작동 원리를 더 잘 이해할 수 있습니다. 이 가설의 핵심 내용은 “대부분의 객체는 젊어서 죽는다”입니다. 쉽게 말해, 프로그램에서 새로 만들어진 ...
Mark and Sweep 알고리즘은 Garbage Collection의 기본 알고리즘 입니다. JVM에서 사용되는 실제 알고리즘은 훨씬 복잡하지만 Mark & Sweep 알고리즘이 기반이므로 확실히 이해해야 합니다. Mark 단계 Mark 단계는 힙 영역에서 live objects를 찾아내는 과정입니다. a) JVM은 힙에 할당된 모든 ...
JVM 개요 자바프로그램이 JVM 위에서 실행하기까지 다음과 같은 과정을 거칩니다. 자바 프로그램으로 작성한 .java 파일을 javac 컴파일러를 이용해 바이트코드(.class)로 컴파일 합니다 컴파일된 .class 파일을 ClassLoader에 의해 JVM 메모리에 저장합니다. (loading, linking, initialisin...