본문 바로가기

분류 전체보기

(49)
리스코프 치환 원칙 예시코드 리스코프 치환 원칙(Liskov Substitution Principle, LSP)은 객체 지향 프로그래밍에서 중요한 원칙 중 하나로, 이 원칙은 Barbara Liskov에 의해 제안되었습니다. LSP의 핵심 아이디어는 "하위 클래스의 인스턴스는 상위 클래스의 인스턴스로 대체될 수 있어야 한다(즉, 치환될 수 있어야 한다)"는 것입니다. 간단한 예를 통해 LSP를 살펴보겠습니다. 잘못된 예: 직사각형(Rectangle)과 정사각형(Square) 클래스를 생각해보세요. 많은 사람들이 정사각형은 직사각형의 특별한 경우로 생각할 수 있기 때문에, 정사각형을 직사각형의 하위 클래스로 구현하려고 할 수 있습니다. class Rectangle: def __init__(self, width, height): sel..
SOLID 원칙 "SOLID"는 객체 지향 디자인과 소프트웨어 개발에서 중요한 원칙 다섯 가지를 나타내는 약어입니다. 이 원칙들은 2000년대 초에 Robert C. Martin에 의해 정의되었으며, 적절히 따르면 유지보수가 쉽고 확장성 있는 시스템을 만들 수 있게 도와줍니다. SOLID 원칙에 대한 개요는 다음과 같습니다: S - 단일 책임 원칙 (Single Responsibility Principle, SRP) 각 클래스는 하나의 책임만을 가져야 한다는 원칙입니다. 다시 말해, 한 클래스는 하나의 변경 이유만 있어야 합니다. 이를 통해 클래스가 변경될 때 다른 부분에 미치는 영향을 최소화할 수 있습니다. O - 개방-폐쇄 원칙 (Open-Closed Principle, OCP) 소프트웨어의 구성요소(클래스, 모듈,..
Apache Ignite with spring Apache Ignite를 사용하여 MySQL 데이터베이스에 대한 캐싱 계층을 구축하면, 개발자는 Ignite를 통해 데이터에 접근하고, Ignite가 내부적으로 MySQL 데이터베이스와의 동기화를 처리합니다. 이러한 접근 방식은 데이터베이스의 부하를 줄이고, 읽기 및 쓰기 작업의 성능을 향상시키는 데 도움이 됩니다. Spring Framework와 Ignite를 연동하는 방법은 다음과 같습니다: 의존성 추가: Spring 프로젝트의 pom.xml 파일에 Ignite와 Spring Data의 의존성을 추가합니다. org.apache.ignite ignite-spring YOUR_IGNITE_VERSION org.springframework.data spring-data-commons YOUR_SPRING..
공간기반 아키텍처 - 데이터그리드 소프트웨어 아키텍처에서 '공간기반 아키텍처'라는 용어는 일반적으로 공간 데이터를 처리하고 관리하는 시스템의 설계를 가리킵니다. 이러한 아키텍처에서 '데이터 그리드'는 특히 중요한 역할을 하는데, 이는 공간 데이터의 분산 저장, 관리 및 처리를 가능하게 하는 구조나 시스템을 의미합니다. 공간기반 아키텍처에서의 데이터 그리드의 주요 특징과 역할은 다음과 같습니다: 분산 데이터 관리: 공간 데이터 그리드는 데이터를 여러 서버에 걸쳐 분산시켜 저장하고 관리합니다. 이는 공간 데이터의 대규모 처리와 저장 요구를 충족시키기 위해 필요합니다. 데이터 병렬 처리: 공간 데이터 그리드는 병렬 처리를 통해 대용량의 공간 데이터를 효율적으로 처리할 수 있습니다. 이는 GIS 시스템, 지리적 데이..
임의의 json body를 받아 로그로 표현해주는 golang 샘플코드 Go 언어(Golang)를 사용하여 임의의 JSON 본문을 받아서 로그로 출력하는 간단한 애플리케이션을 작성하는 것은 HTTP 서버를 설정하고, JSON 데이터를 처리하는 코드를 포함하는 것을 의미합니다. 다음은 이를 수행하는 기본적인 코드 예제입니다: HTTP 서버 설정: 표준 net/http 패키지를 사용하여 HTTP 서버를 설정합니다. JSON 처리: encoding/json 패키지를 사용하여 JSON 데이터를 처리합니다. 로그 출력: log 패키지를 사용하여 로그를 출력합니다. package main import ( "encoding/json" "log" "net/http" ) // RequestBody 구조체는 받을 JSON 데이터의 구조를 정의합니다. type RequestBody struct..
flink(플링크) vs Spark(스파크) Apache Flink와 Apache Spark는 대규모 데이터 처리를 위한 오픈 소스 분산 처리 시스템입니다. 두 시스템 모두 빅 데이터 애플리케이션을 위한 풍부한 기능과 라이브러리를 제공하지만, 아키텍처와 처리 모델에서 몇 가지 중요한 차이점이 있습니다. 차이점: 처리 모델: Flink: Flink는 주로 스트리밍 데이터를 처리하기 위해 설계된 플랫폼입니다. Flink는 트루 스트리밍 (true streaming) 처리 모델을 사용하여 데이터를 실시간으로 처리합니다. 이는 데이터가 시스템에 도착하자마자 바로 처리되며, 미니 배치 형태가 아닌 순수한 스트리밍 방식으로 작동합니다. Spark: Spark는 미니 배치 모델을 사용하여 스트리밍 데이터를 처리합니다. 이는 스트리밍 데이터를 작은 배치로 나누어..
flink(플링크) 사용자 메트릭 생성 예시 Apache Flink에서 사용자 정의 메트릭을 사용하기 위해, 먼저 RichFunction 추상 클래스를 상속하는 커스텀 함수를 정의해야 합니다. 이 클래스들은 getRuntimeContext() 메서드를 통해 런타임 컨텍스트에 접근할 수 있으며, 이를 통해 메트릭 그룹을 가져오고 사용자 정의 메트릭을 등록할 수 있습니다. 다음은 사용자 정의 메트릭을 추가하는 방법에 대한 간단한 예시입니다: 사용자 정의 함수 정의: public class MyRichMapFunction extends RichMapFunction { private transient Counter myCounter; @Override public void open(Configuration parameters) throws Exceptio..
Flink(플링크) getRuntimeContext Apache Flink에서 getRuntimeContext() 메서드는 현재 함수가 실행되고 있는 Runtime Context의 정보에 접근할 수 있게 해주는 메서드입니다. 이 메서드는 RichFunction 인터페이스를 구현한 함수들에서 사용할 수 있습니다. 예를 들어, RichMapFunction, RichFlatMapFunction, RichFilterFunction 등이 이에 해당합니다. getRuntimeContext() 메서드를 통해 다음과 같은 정보에 접근할 수 있습니다: Task Information: getIndexOfThisSubtask(): 현재 서브태스크(subtask)의 인덱스를 반환합니다. getNumberOfParallelSubtasks(): 병렬로 실행되는 서브태스크의 총 수..
Flink(플링크) mayBy maxBy는 Apache Flink의 DataStream API 내에 있는 함수로, 특정 필드에 대해 최대 값을 가진 아이템을 선택하는데 사용됩니다. Flink는 실시간 스트림 처리를 위한 오픈 소스 플랫폼으로, 대용량 데이터 스트림을 처리하는데 적합합니다. maxBy 함수는 필드의 최댓값을 유지하면서 해당 필드를 기준으로 데이터 스트림 내의 요소를 추적합니다. 예를 들어, 어떤 데이터 스트림이 여러 사용자의 클릭 이벤트를 포함하고 있고, 각 이벤트에는 사용자 ID와 클릭 수가 포함되어 있다면, maxBy 함수를 사용하여 가장 많은 클릭을 한 사용자의 이벤트를 식별할 수 있습니다. 아래는 maxBy 함수를 사용하는 간단한 예시입니다: DataStream inputStream = // ... 데이터 스트림..
서비스 가용성 지표 종류 서비스 가용성 지표(Service Availability Metrics)는 IT 서비스 및 시스템이 예상대로 작동하고 사용할 수 있는 상태를 나타내는 여러 수치들로 구성됩니다. 이 지표들은 서비스의 신뢰성과 성능을 측정하고, 고객이 서비스에 대한 신뢰를 가질 수 있도록 보증하는데 중요한 역할을 합니다. 일반적으로 서비스 가용성은 시간의 특정 비율로 표현되며, 여기에는 여러 가지 요소가 포함될 수 있습니다. 가용성 지표에 포함될 수 있는 항목은 다음과 같습니다: 가용성(Availability) Uptime(가동 시간): 서비스가 정상적으로 작동하는 데 사용할 수 있는 시간. Downtime(다운타임): 서비스가 예정되지 않은 이유로 사용할 수 없는 시간. 가용성 비율(Availability Ratio) 가..