교육을 받다가 공부해오라는 개념이 있어서 정리하려한다.
😺 tiles
그동안의 프로젝트에서는 header, footer jsp 파일을 따로 만들어서 jsp include를 통해 한 화면을 구현했지만, 이것은 일관된 레이아웃 적용에 대한 보장이 없었다.
tiles는 웹 화면의 레이아웃을 간단하게 정의할 수 있는 템플릿 프레임워크이다.
기본 구성 템플릿을 정의하고, 상속을 통해서 구조를 재사용 할 수 있는 기능 및 설정 파일을 통합 관리할 수 있는 툴이다. 확장성이 있고 일관된 페이지 구성을 보장할 수 있음.
😺 RMI
이에 관련된 개념으로는 소켓이 있었다. 소켓은 서버와 통신할 때, 해당 서버의 특정 App에 접근하기 위해서는 특정 port와 연결되어 있어야 한다. 이 때, 바로 app에 접근하는 것이 아니라 소켓을 거친 뒤에 app에 접근하고 이용할 수 있게 되는 것이다.
(소켓 프로그래밍은 이 소켓 부분을 설계에서 어떤 방식으로 통신할 지 정해주는 것)
(ServerSocket 하나가 여러 컴퓨터의 client 접속을 인식하는 것이 아님.
client 1개당 1개의 ServerSocket이 생성되는 것임. ServerSocket이 너무 많아지는 것은 비효율 적이므로 이 문제를 해결하기 위해 나온 것이 바로 쓰레드임.)
소켓 프로그래밍에서는 분산된 객체간의 메시지 교환을 위해서는 프로그래머가 프로토콜을 직접 설계해야 했는데, 이게 너무 복잡하고 에러를 잘 발생시켰다. 이걸 해결하는 방법으로 RMI가 제안 되었음.
네트워크로 연결된 여러 대의 컴퓨터에 하나의 프로그램이 분산되어 실행되면서 마치 하나의 프로그램 처럼 움직이는 시스템 즉, 분산 시스템을 자바에서 지원해주는 프로그램이다.
네트워크로 연결된 다른 컴퓨터에 존재하는 메서드를 마치 내 컴퓨터에 있는 듯이 호출해서 사용하도록 만들어주는 것이 java.rmi 패키지이다.
😺 Logback
log4j와는 다르게 서버 중지 없이, 이전 시점부터 복구를 할 수 있다.
😺 log4j
log4j를 재설정하기 위해서는 서버를 셧다운 한 후 재기동을 해야한다.
😺 elastic search
실시간으로 JSON 문서를 검색 가능한 데이터로 만든다. 속도, 확장성, 복원력 뿐만이 아니라 데이터 롤업이나 인덱스 생명주기 관리 등 데이터를 효율적으로 저장하고 검색할 수 있는 기본 기능이 탑재되어있다.
replica와 shard를 공부하기 앞서, raid의 개념을 알아야 한다고 함.
RAID는 여러 개의 하드디스크를 용도에 맞게 구성하여 사용하는 기술이다.
저장 속도를 높이기 위해 분할 저장을 하거나, 안정성을 위해 복제본을 만들거나 하는 방법이다.
😺 shard
RAID0 처럼 데이터를 나눠서 기록하는 방식 (속도 향상)
elastic search는 인덱싱할 때 node 내부에 논리적으로 데이터 저장 공간을 만든다. 이 저장 공간들에 여러 개의 데이터를 분산해서 저장할 수 있도록 만든다.
😺 replica
RAID1과 유사하다. 데이터가 shard에 저장되면, 이 shard에 대한 복제본을 만든다.
가용성이 증가되면서, 검색 성능도 향상된다.