기술 창고/Java(20)
-
[Java] 주키퍼 서버 / 클라이언트 (다운로드 및 설정)
주키퍼는 분산 시스템 설계하는 데에 있어 유요한 도움을 주는 서버 및 도구입니다. 오늘은 이 주키퍼 서버 및 클라이언트를 다운로드 하고 설정하는 방법에 대해서 정리해보겠습니다. 분산 시스템을 어떻게 개발할 것인가? 지금 현재 컴퓨터가 여러 대 있지도 않고 클라우드 기기를 여러 대 사놓고 원격으로 개발하는 일은 매우 불편하고 비용도 많이 듭니다. 하지만 일반적으로 분산 시스템 개발은 정해진 방식으로 진행되는데, 이 방식이 보통 여러분 기기에서 로컬로 진행할 수 있습니다. 따라서 개발환경(IDE)에 맞춰 로컬에서 코드를 작성하고, 디버깅하고, 테스트할 수 있습니다. 일반적으로 로컬에서 개발을 마친 다음에 개발한 프로그램을 검증하기 위해 클러스터 같은 플랫폼에 배포하고 품질 검증을 거칩니다. 그러고 나서 실제..
2024.03.20 -
[Java] 클러스터 코디네이션(주키퍼)과 리더 선출 알고리즘
분산 시스템의 알고리즘과 설계를 진행하기 이전에, 분산 시스템에서 가장 기본적이고 공통적인 두 가지 용어부터 알아보겠습니다. (1) 노드 (node) 노드는 분산 시스템의 일부로 동작하는 시스템에서 실행되는 각 프로세스입니다. 분산 시스템에서는 두 노드 사이에 선분이 존재하면 두 프로세스가 네트워크를 통해 서로 통신할 수 있다는 뜻입니다. (2) 클러스터 (cluster) 클러스터는 서로 연결된 노드의 모음입니다. 한 클러스터의 노드들은 동일한 작업을 수행하며 일반적으로 동일한 코드로 실행됩니다. 보통 우리는 분석해야하거나 복잡한 계산이 필요한 데이터의 양이 매우 많을 경우, 이 작업을 수행하기 위해 노드가 모여 있는 특정 클러스터로 넘기길 원합니다. 여기서 문제는, 어느 노드에서 어떤 작업을 수행할 것..
2024.03.19 -
[Java] Java를 활용한 분산 시스템
분산 시스템은 어디에서나 존재하는 시스템입니다. 영화를 보거나 온라인 쇼핑, 휴대폰으로 차량 공유 서비스들을 이용할 때 인터넷에서 무언가를 검색할 때마다 사실 우리는 앱이나 웹 페이지를 통해 그 뒤에 있는 분산 시스템과 통신합니다. 이런 서비스를 제공하는 모든 기업은 전 세계에 걸쳐 고도로 확장이 가능한 대규모 분산 시스템을 운영하여 매일 수백만명의 사용자와 데이터를 처리하고, 일정하고 원활한 사용자 경험을 제공합니다. 또한, 클라우드에서 호스팅 되는 아주 간단한 웹사이트 조차도 분산 시스템에서 동작합니다. 클라우드는 특별히 기업을 위해 구축된 복잡한 분산 시스템인 만큼 소프트웨어 개발자들이 맡기 때문에 사용자들은 제품에 집중하고 나머지 부분은 클라우드 공급 업체가 처리하도록 할 수 있습니다. 중앙 집중..
2024.03.19 -
[Java] record
record record 는 java가 업데이트 됨에 따라 최근에 나온 신 기능입니다. getter, setter, 생성자를 따로 만들 필요없이 객체를 생성할 수 있도록 지원해주는 기능입니다. // 신 기능 : record // getter, setter, 생성자를 따로 만들 필요없이 지원해주는 기능 record Person (String name, int age, Address address){}; record Address (String firstLine, String city){}; @Configuration public class HelloWorldConfiguration { @Bean public Person person(){ var person = new Person("진세훈", 27, new..
2023.05.30 -
[Java] equalsIgnoreCase("~")
equalsIgnoreCase 는 평범하게 equals 함수와 똑같이 사용할 수 있다. equals는 대소문자까지 구분해서 문자열이 동등한지 확인하는 것이라면, equalsIgnoreCase는 영문자를 사용했을 때 대소문자를 구분하지 않고 일치하는지 확인한다.
2023.04.03 -
[Java] System.out.println 메소드 지양 이유
자바로 개발을 진행하다보면 System.out.println() 메소드를 많이 사용하게 된다. 개발 관련 도서들을 보아도 기본적으로 출력을 System.out.println() 을 통해 진행하기도 하고, 비교적 간단하게 자신이 출력하고자하는 결과값을 간편하게 확인할 수 있기 때문에 많이 사용한다. 또한, 자신이 작성한 코드에 에러가 발생하게 된다면 로그를 확인하기 위한 용도로도 많이 사용하기도 하는데 간단한 로직이나 알고리즘을 확인하기 위한 용도라면 상관없지만 본격적인 프로젝트나 사용자가 존재하는 실무 환경에서의 프로젝트에서는 사용하는 것을 지양하는 것이 좋다고 한다. System.out.println() 사용 지양 이유 (1) 로그 내용 휘발성 System.out.println() 은 로그 내용이 표준..
2023.02.01