목록백엔드 면접 (24)
코드 그라데이션
APM(Application Performance Montoring) APM 솔루션의 기본 구성 요소 1) 트랜잭션 모니터링 애플리케이션의 각 트랜잭션을 모니터링하고 추적하여 성능 문제나 병목 현상을 식별한다. 트랜잭션 모니터링은 요청의 시작부터 끝까지의 모든 단계를 시간에 따라 기록하고, 각 단계에서의 지연이나 오류를 확인할 수 있다. 2) 성능 분석 APM은 애플리케이션 내부의 코드, 데이터베이스 쿼리, 외부 서비스와의 상호 작용 등에 대한 성능을 분석한다. 코드 레벨에서의 성능 분석을 통해 병목 현상이나 비효율적인 부분을 식별하여 최적화할 수 있습니다. 3) 로그 관리 APM은 애플리케이션에서 생성되는 로그를 수집하고 분석하여 장애나 오류의 원인을 파악한다. 로그 데이터는 애플리케이션의 동작 및 사..
먼저, GC의 종류 Serial GC 단일 스레드 환경 및 소규모 응용 프로그램을 위한 간단한 GC Minor GC에서 Copy & Scavenge 알고리즘 적용 Full GC에서 Mark & Compact 알고리즘 적용 Parallel GC JVM 기본 옵션(Java 8 기본) 멀티스레드 기반개수 지정 가능 으로 작동해 효율을 높임 Low-pause(응용 프로그램 중단 최소화) Throughput(Mark & Compact 알고리즘을 기반으로 신속성 최대화) Concurrent GC Low-pause 와 유사하며 응용 프로그램 실해 중 GC 실시 동작 중지 최소화 Incremental GC (Train GC) Concurrent GC와 유사하나 Minor GC 발생 시 Full GC GC를 일부 병행 ..
Heap 영역의 관리 관리는 크게 세 가지 구조적인 부분으로 나눌 수 있다. 새로운 객체 할당 객체가 생성될 때, 힙 영역에 메모리 공간을 할당한다. 객체의 크기에 따라 동적으로 메모리를 할당하며, 할당된 메모리는 객체의 데이터와 함께 초기화된다. 객체 사용 및 참조 생성된 객체는 프로그램의 다른 부분에서 참조됩니다. 이때, 힙 영역 내부에는 객체의 주소를 참조하는 레퍼런스 변수들이 존재합니다. 여러 레퍼런스 변수가 동일한 객체를 참조할 수 있으며, 객체의 필드나 배열 요소 등을 통해 객체 내부의 데이터에 접근할 수 있습니다. 가비지 컬렉션 (Garbage Collection) 힙 영역에서는 더 이상 참조되지 않는 객체들이 가비지 컬렉션에 의해 정리된다. 가비지 컬렉터는 주기적으로 실행되거나 힙 영역이 ..
이 부분이 잘 이해가 안 되어서 역할 구분에 대해 조금 더 찾아보았다. JVM Runtime data area 메소드 영역 (Method Area) 메소드 영역은 JVM의 런타임 데이터 영역 중 하나로, 클래스에 대한 정보를 저장한다. 클래스 로더에 의해 로드된 클래스의 바이트 코드, 정적 변수(static variable), 상수, 메소드 코드 등이 여기에 저장된다. 모든 스레드가 공유하는 영역으로, JVM이 시작될 때 생성되며 프로그램이 종료될 때까지 유지된다. Java 7 이전에는 Permanent Generation으로 알려져 있었지만, Java 8부터는 Metaspace로 대체됐다. 힙 영역 (Heap Area) 힙 영역은 동적으로 생성된 객체 인스턴스와 배열이 저장되는 영역이다. 프로그램 실행..
JVM 기본 구조 클래스 로더 .java 파일을 컴파일해서 얻는 .class class을 메모리 로드 로드할 클래스가 여럿이면 Main() 메서드를 포함하는 클래스를 우선 로드 로드, 링크, 초기화 단계를 거침 (JVM 내장) 클래스 로더 1.부트스트랩 클래스 로더 • java.lang, java.net, java.util, java.io 같은 표준 Java 패키지 로드 • rt.jar 파일에 들어있는 핵심 라이브러리 2. 확장 클래스 로더 • $JAVA_HOME/ jre / ext • 확장 라이브러리 클래스 로드 3. (응용 프로그램) 클래스 로더 • (classpath , cp) 클래스 경로에 있는 클래스 로드 • 일반적으로 개발자가 작성한 코드를 포함하는 클래스 • 로더가 클래스 이름을 찾지 못할 ..
컴퓨터를 구성하는 것이 일반적으로 S/W + H/W 이고 H/W의 구성 요소 중 대표적인 게 CPU(연산 장치) CPU가 인식할 수 있는 코드를 Machine code라고 부른다. 이 머신 코드는 프로세스마다 구체적인 값이 좀 다른데, 그것은 CPU 데이터 시트지를 봐야 할 수 있다. 그것은 좀 일반적으로 공통된 형태로 바꿔서 나온 것을 어셈블리어라고 부른다. 네이티브 코드 개발자는 컴파일러가 아예 머신 코드에 대고 번역을 해버린다. 그래서 어떤 하이레벨 언어의 코드가 있다면 그걸 CPU가 인식할 수 있는 기계로 바꾼다. 그리고 여기까지를 플랫폼이라 한다. OS + CPU + RAM(/SSD) = JVM http://hoonmaro.tistory.com/19 출처 훈마로의 보물창고 JVM(Java Vir..
SSL 인증서 SSL 인증서를 검증하는 방법은 인증서를 발급한 CA의 인증서에 포함된 Public key key를 이용해 SSL 인증서 Hash 결과를 복호화 하면 된다. PKI 인증체계 PAA (Policy Approval Authorities, 과학기술정보통신부)) 공인인증서에 대한 정책을 결정하고 하위 기관의 정책을 승인하는 기관이다. 우리나라는 미래창조과학부가 담당한다 PCA (Policy Certification Authorities, 정책인증기관)) RootCARootCA를 발급하고 기본 정책을 수립하는 기관으로, 우리나라의 KISA(Korea Information Security Agency, 한국정보보호진흥원 가 여기에 해당한다. RootCARootCA는 모든 인증서의 기초가 되는 인증서를..
Proxy 구조(우회) 기본적으로 프록시 구조는 Socket 수준에서 작동한다. 그러면 실제 통신을 하게 되는 호스트가 여러 개가 되어버리는 문제 프록시는 의뢰 / 대리자 역할이라고 생각하면 된다. 웹 서버 입장에서는 누가 접속했다고 할 때, 실제로는 프록시 서버가 접속을 한 경우가 된다. Proxy 구조(서버 보호) 이런 상황일 때 클라이언트가 DNS에게 질의를 하면 a.com의 주소를 5.5.5.5라고 알려준다. 그런데 이 주소는 웹 서버가 아니고, 실제로는 웹 어플리케이션 방화벽이다. 클라이언트 입장에서는 이 방화벽이 웹 서버인줄 알고 접속을 한다. 입력은 서버 입장에서는 절대 신뢰해서는 안된다. 그렇기 때문에 반드시 검증을 함. 이 일을 수행하는 게 WAF인데 검증에는 파라미터로 넘어오는 것 뿐만..