MSA(MicroService Architecture)란 각각을 마이크로하게 나눈 독립적인 서비스를 연결한 구조를 말하며, 이러한 특성 덕분에 시스템 전체의 중단 없이 필요한 부분만 업데이트, 배포가 가능합니다. 유연한 대응이 가능해 실시간으로 요구사항을 반영할 수 있습니다.
자바의 메모리는 Class Area(Method Area), heap, stack으로 이루어져 있습니다. 클래스 영역에는 static 변수, 전역 변수, 코드에서 사용되는 클래스 정보들이 올라갑니다. 코드에서 사용되는 클래스들을 로더가 읽고 클래스 별로 분류해서 저장합니다. 힙은 new 연산자를 통해 동적할당된 객체들이 저장되고, 메모리는 가비지 컬렉션에 의해 관리됩니다. 스택은 메서드 수행 시마다 프레임이 할당되어 메서드 수행에 필요한 변수(로컬변수)나 중간 결과 값을 임시 기억합니다. 메서드가 종료될 경우에 할당된 메모리가 자동 제거됩니다.
자바의 프로그램이 실행되면 JVM 은 OS로 부터 이 프로그램이 필요로 하는 메모리를 요청하여 할당받습니다. JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리합니다.
자바 컴파일러가(javac) 자바 소스코드를(.java) 를 읽어들여 바이트코드(.class) 로 변환(아직 컴퓨터가 이해할 수 없는 상태입니다. 바이트 코드는 인간이 보기 편한 형태입니다.)시킵니다.
Class Loader 를 통해 class 파일들을 JVM 내부로 로딩합니다.
로딩된 class 파일들은 실행 엔진(Execute Engine)을 통해 기계어(컴퓨터가 알아들을 수 있는 언어)로 해석됩니다.
해석된 바이트 코드는 메모리 상(Runtime Data Area)에 배치되어 실질적인 수행을 하게됩니다.
이런 실행과정 중에 JVM은 Thread Synchronization 이나 GC(Garbage Collection) 같은 작업을 수행하게 됩니다.
DB 튜닝은 데이터베이스의 구조나 데이터베이스 자체, 운영체제 등을 조정하여 데이터베이스 시스템의 성능을 향상시키는 작업을 의미합니다. 튜닝은 DB 설계 튜닝 -> DBMS 튜닝 -> SQL 튜닝의 단계로 진행할 수 있습니다.