전체 글
-
Ubuntu (우분투) 에 OpenSearch (오픈서치) 설치하기프로젝트 노트 2023. 12. 12. 15:51
운영환경이 Ubuntu로 픽스되어 해당 운영체제에 Opensearch를 설치를 하게 되었습니다. apt-get을 통해 손쉽게 다운로드 할 수 있는 상황도 있겠으나, 저는 배포판(tar)를 다운받아 설치하는 방법을 알아보려 합니다. 운영체제 환경은 위와 같습니다. Ubuntu 20.04.4 LTS 버전이 깔려있군요..22버전으로 업그레이드를 했어도 됐으나 이미 설치되어있으니 그냥 해보죠. 우선 Opensearch를 다운받아야겠지요? 아래 사이트로 접속합니다. Opensearch 2.11.1 opensearch.org 살짝 아래로 내려보면 OpenSearch를 다운로드 받는 버튼이 보이며 플랫폼과 패키지를 선택 후 다운로드 해주면 됩니다. 저는 .tar.gz으로 다운로드 하였습니다. 다운로드가 완료되었네요...
-
[프로그래머스] 정수를 나선형으로 배치하기알고리즘 노트 2023. 12. 12. 10:42
주어진 행과 열의 수 만큼의 영역에서 나선형을 돌며 1씩 증가하면 됩니다. 위 내용으로 유추해볼 때 나선형의 특정 영역에서 연산이 처리되어야 할 겁니다. 아래 그림을 먼저 보시죠. 배열의 인덱스를 x와 y라고 지칭했을때, 첫번째 이동 경로인 1에서 2는 x는 그대로 두고 y가 증가합니다. 즉, [0, 0], [0, 1], [0, 2], [0, 3], [0, 4] 순으로 y가 증가하죠. 그리고 두번째 이동 경로인 2에서 3은 y는 그대로 두고 x가 증가합니다. 즉, [1, 4], [2, 4], [3, 4], [4, 4] 순으로 x가 증가하죠. 3에서 4는 1에서 2의 역순으로 y가 줄어들고, 4에서 1은 2에서 3의 역순으로 x가 감소합니다. 코드를 보면 다음과 같습니다. n을 회전 기점으로 사용하기 때문..
-
OpenSearch 외부 접속 및 설치 오류 : discovery.seed_hosts, discovery.seed_providers, cluster.initial_cluster_manager_nodes / cluster.initial_master_nodes오답 노트 2023. 12. 7. 15:59
OpenSearch를 우여곡절 끝에 설치하고 실행시켜보려고 했습니다. 우선 외부에서 접속을 해야 하기 때문에 우선 Opensearch.yml 내부에 network 탭에 아래의 내용을 추가해줍니다. // opensearch.yml ...(생략)... # ---------------------------------- Network ----------------------------------- # # Set the bind address to a specific IP (IPv4 or IPv6): # #network.host: 192.168.0.1 network.host: 0.0.0.0 # # Set a custom port for HTTP: # #http.port: 9200 http.port: 9200 tr..
-
[OpenSearch] Accessdenied Exception: opensearch.keystore 오류 해결하기!오답 노트 2023. 12. 7. 15:53
Opensearch를 Ubuntu 20.04 버전에 설치를 하고 있습니다. deguruv@deguruv-pc:~/opensearch-2.11.1/bin$ lsb_release -a No LSB modules are available. Distributor ID:Ubuntu Description:Ubuntu 20.04.4 LTS Release:20.04 Codename:focal 설치를 열심히 하였고, 이제 실행해봐야겠다는 생각에 opensearch 폴더 내에 있는 opensearch-tar-install.sh를 실행시켰습니다. 그랬더니 다음과 같은 오류가 발생했습니다. java.nio.file.AccessDeniedException: /home/deguruv/opensearch-2.11.1/config/..
-
OpenSearch + Spring Boot + Java 연동 예제 (HTTPS 및 Apache HttpClient 5 활용하기!)프로젝트 노트 2023. 12. 6. 15:18
📌 들어가며 회사 프로젝트에서 기존에 DB를 Oracle을 사용하다 급격한 로깅 트래픽의 증가로 Oracle에서 검색 효율이 좋은 ElasticSearch를 사용해보려 했습니다. 허나 그 막대한 라이선스 비용을 감당하느니 차라리 다른 식으로 구현을 해보자 하여 갑자기 대두된 플랫폼이 OpenSearch였습니다. 처음에 OpenSearch라는 플랫폼이 생소하긴 했지만 이미 AWS 진영에서는 많이 사용되고 있었고, 별도의 로컬 서버를 구축할 수 있도록 이미 설치패키지가 제공되고 있었습니다. LogStash와 Kibana로 멋지게 대시보드도 구현할 수 있고, QueryDSL을 활용할 수 있는 Dashboard도 손쉽게 활용할 수 있었습니다. 근데 다만 문제는 Java와의 연동 예제가 많지 않다는 것이었죠.. ..
-
Apache HttpClient 5 알아보기스터디 노트 2023. 12. 6. 13:25
HTTP(Hypertext Transfer Protocol)는 이제 인터넷에서 가장 중요한 프로토콜 중 하나입니다. 웹 서비스를 구성하는 대표적 아키텍쳐인 마이크로 서비스 등에서 사용하는 통신 규약 프로토콜로 HTTP가 지배적으로 사용되며, HTTP 프로토콜은 웹 브라우저에서 더 광범위한 시나리오로 사용되고 있지요. Java Enterprise 개발자라면 HTTP를 다루기 위해 여러가지 공부를 해야 합니다. 오늘은 그 중 Apache의 HttpClient 5에 대해 스터디를 해볼까 합니다. Apache HttpClient 5는 Java에서 HTTP 요청을 보내고 응답을 수신할 수 있도록 기능을 제공하는 라이브러리입니다. 이 라이브러리는 다양한 기능을 제공하여 HTTP 요청과 응답을 보다 쉽게 구현할 수 ..
-
Optional, 그렇게 쓸꺼야🤔?스터디 노트 2023. 12. 5. 15:15
질의를 받았습니다. 여기에 왜 Optional을 쓰셨어요? 음? null을 방지하기 위해서...? 답변하기가 애매했습니다. Optional은 왜 써야 할까요? 삼항연산자로 가볍게 처리하면 되는데 굳이 Optional을 써야만 하는걸까요? 📌 Optional이 뭡니까? Java의 Optional은 null 값을 감싸서(Wrapping) 보다 안전하게 다루기 위한 목적으로 도입된 클래스입니다. Optional의 기본 개념은 다음과 같습니다. Optional은 null 값을 감싸는 객체입니다. Optional은 값이 있는지 여부를 확인할 수 있습니다. Optional에 값이 있는 경우, 값을 가져올 수 있습니다. Optional에 값이 없는 경우, 지정된 값을 반환하거나, 지정된 함수를 호출하여 반환된 값을 ..
-
@Transactional 사용 시 주의해야 할 사항들스터디 노트 2023. 12. 4. 16:57
@Transactional 애너테이션은 스프링 AOP를 사용해 동작합니다. AOP 위빙이 되지 않은 채 대상 메서드가 실행되어도 알기가 어렵습니다. 즉, 대상 메서드가 실행되었지만, 어드바이스가 정상적으로 실행되지 않을 수 있다는 말이 됩니다. 여기서 개발자가 쉽게 실수하는 두 가지 주의 사항과 사용할 때 유의점을 살펴보도록 하겠습니다. ✅ public 접근제어자로 선언된 메서드만 @Transactional 애너테이션이 동작합니다. final이나 private 접근제어자로 선언된 메서드는 프록시로 만들 수 없기 때문에 애너테이션을 선언해도 정상동작하지 않습니다. ✅ 스프링 빈으로 주입된 객체의 메서드를 호출해야 합니다. 당연하겠죠. 우리는 스프링 프레임워크 위에서 동작하게 됩니다. ApplicationC..