1. Elasticsearch루씬 기반의 오픈소스 검색 엔진2. Elasticsearch 특징준실시간 검색 시스템고가용성을 위한 클러스터 구성 가능(한 대 이상의 노드로 클러스터를 구성해 높은 수준의 안정성을 달성하고 부하 분산이 가능)동적 스키마 생성Rest api 기반의 인터페이스 제공3. Elasticsearch 클러스터여러 대의 노드들이 각자 역할을 바탕으로 연결돼 하나의 시스템으로 동작어떤 노드에 어떤 요청을 해도 동일한 응답을 줌1) 노드의 종류마스터 노드 : 클러스터 상태 관리 / 메타 데이터 관리데이터 노드 : 문서 색인 및 검색 요청 처리코디네이팅 노드 : 검색 요청 처리인제스트 노드 : 색인되는 문서의 데이터 전처리4. 인덱스와 샤드인덱스 : 문서가 저장되는 논리적 공간샤드 : 인덱스에..
Runtime Data Area Method Area바이트 코드를 처음 메모리 공간에 올릴 때 초기화되는 대상을 저장하기 위한 메모리 공간새로운 객체를 만들 때 Method Area를 참고하여 Heap에 실제 객체의 값을 저장한다1) Runtime Constant Pool클래스 별로 런타임 상수 풀을 가지고, 클래스 및 인터페이스의 상수/메서드와 필드에 대한 모든 레퍼런스에 대한 정보를 가짐JVM은 어떤 메서드나 필드를 참조할 때 런타임 상수풀을 통해 해당 메서드나 필드의 실제 메모리상 주소를 찾아 참조함동작 과정A 클래스에서 B 클래스를 참조하고 있다면, 클래스 로더는 B 클래스가 Method Area에 로딩되어 있는지 확인만약 Method Area 에 있다면 해당 클래스의 레퍼런스를 B 클래스를 참조..
JDK JRE JVM1) JVM (Java Virtual Machine)자바로 작성된 프로그램의 바이트코드(.class)를 운영체제에 맞는 기계어로 변환하고 실행하는 역할2) JRE (Java Runtime Environment) → 실행자바 실행환경, JVM + 프로그램 실행에 필요한 핵심 라이브러리(API) 등을 포함한 패키지3) JDK (Java Development Kit) → 개발자바 개발키트, JRE + 자바앱 개발을 위한 모든 도구(컴파일러, 디버거, 문서화 도구 등)JVM 구조1) Class LoaderJVM 내로 클래스 파일(바이트 코드)을 로드하고, 링킹*을 수행하는 모듈런타임 시에 동적으로 클래스를 로드 (동적로딩) ✅ 링킹JVM이 클래스 파일을 로드한 후, 해당 클래스가 안전하게 실..
자사 서버 이관하면서 elasticsearch ver 7.x → ver 8.x 로 업그레이드 할 수 있는 기회가 생겼다.지금부터 elasticsearch 를 업그레이드 하면서 겪었던 시행착오와 알게 된 정보들을 써보려 한다. 개요시작하기 전, 용어/개념 정리부터 먼저 해야 되겠다. (ES는 공식 명칭이랑 객체명 동일하게 안 가져가는 건 좀 반성할 필요가 있음)Elasticsearch 공식 명칭객체명/동의어비고High Level Rest ClientRestHighLevelClient, HLRC기존에 많이 사용하던 고수준 추상화 client으로, RestClient 를 사용함Java Low Level Rest ClientRestClient, Low Level Client저수준 추상화 clientJava AP..
자사 서버 이관하면서 springboot ver 2.x → ver 3.x 로 업그레이드 할 수 있는 기회가 생겼다.(사용하고 있던 elasticsearch 도 ver 7.x → ver 8.x 로 업그레이드 해야했는데 이건 라이브러리 / 코드 상으로도 많은 변화가 있었다. 이것까지 다 쓰면 내용이 너무 길어질 것 같아서 따로 글을 쓸 예정이다.)지금부터 springboot를 마이그레이션 하면서 겪었던 시행착오와 알게 된 정보들을 써보려 한다.AS-IS / TO-BE내가 진행했던 마이그레이션 환경은 다음과 같다. AS-ISTO-BEJDK1121Springboot / Spring2.x / 5.x3.x / 6.xElasticsearch7.x8.xJDK 11 → 21📍javax → jakarta 로 변경spri..
1️⃣kafka 배경Kafka는 원래 LinkedIn에서 개발하고 나중에 Apache Software Foundation에 기부한 오픈 소스 분산 스트리밍 플랫폼이다.이전의 어플리케이션 간 연결이 복잡해져 서로 영향을 주게 되던 구조에서, 데이터를 중앙집중화 하는 시스템을 만들었다.대규모, 높은 처리량, 실시간 데이터 스트리밍 및 처리를 처리하도록 설계되었습니다.2️⃣기본 개념TOPICKafka는 메시지의 범주 또는 피드인 토픽으로 데이터를 구성하는데, 각 메시지는 특정 토픽에 추가된다.병렬 처리 및 확장성을 허용하기 위해 항목을 파티션으로 나눌 수 있다.PRODUCERKafka 토픽에 메시지를 게시하는 애플리케이션 또는 시스템.특정 토픽에 메시지를 쓰고 쓸 파티션을 선택하거나 Kafka가 파티션을 자동..
OSI 7계층별 이해1️⃣1계층 / 피지컬 계층1계층 동작전기신호가 1계층 장비에 들어오면 이 전기 신호를 재생성해 내보낸다1계층 특징물리적 연결 & 관련 정보를 정의전기 신호를 정확히 전달하는 데 초점1계층 장비는 주소 개념이 없어 전기 신호가 들어온 포트를 제외하고 모든 포트에 같은 전기 신호를 전송1계층 주요 장비허브와 리피터 : 네트워크 통신을 중재하는 네트워크 장비케이블과 커넥터와 트랜시버 : 컴퓨터의 랜 카드와 케이블을 연결하는 장치탭 : 네트워크 모니터링과 패킷 분석을 위해 전기 신호를 다른 장비로 복제2️⃣2계층 / 데이터 링크 계층2계층 동작출발지와 도착지 주소를 확인하고 내게 보낸 것이 맞는지, 내가 처리해야 하는지에 대한 검사 후 데이터 처리 수행2계층 특징데이터 링크 계층으로 전기 ..
OSI 7계층과 TCP/IP과거 통신용 규약이 표준화 되지 않고 각 벤더에서 별도로 개발하여 호환되지 않는 시스템/애플리케이션이 많았고 통신이 불가능함이를 하나의 규약으로 통합하려던 것이 OSI 7계층현재는 대부분의 프로토콜이 tcp/ip 프로토콜 스택 기반으로 돼있음1️⃣OSI 7계층1~4계층 / 데이터 플로우 계층 / 하위 계층 : 데이터를 상대방에게 잘 전달하는 역할5~7계층 / 애플리케이션 계층 / 상위 계층 : 데이터를 만드는 역할애플리케이션 개발자는 하향식(TOP-DOWN) 형식으로 네트워크를 바라보고 네트워크 엔지니어는 상향식(BOTTOM-UP) 형식으로 네트워크를 인식한다. → 애플리케이션 계층 프로토콜을 개발할 때 하위 계층을 고려하지 않아도 된다 / VISE VERSA2️⃣TCP/IP ..
네트워크 구성 1️⃣홈네트워크 구성 인터넷 - (케이블) - 모뎀 - (케이블) - 공유기 - (케이블/무선) - 단말 인터넷 회선(FTTH, 케이블 인터넷, VDSL) 모뎀 : 네트워크 장비 공유기 : 가정용으로 만든 라우터 역할, 최근 라우터 기능 외에도 허브, 스위칭 허브, 방화벽과 같은 기능도 제공 단말(노트북 등) 공유기와 단말 간 무선연결/유선연결 무선연결 : 무선 랜카드 & 무선신호 매개체(공기) 유선연결 : 유선 랜카드(이더넷 랜 카드: 보드에 내장) + 랜 케이블(랜선) 2️⃣데이터 센터 네트워크 특징 안정적이고 빠른 대용량 서비스 제공하기 위함 다양한 이중화 기술 사용 & 높은 통신량 수용 가능 → 고속 이더넷 기술 사용 기존에는 3계층 구성이 일반적 → 2계층 스파인 리프 구조로 변화..