반응형

분류 전체보기 83

Kafka Schema Registry

개요 - Schema Registry는 Kafka와 별도로 동작하는 프로세스이며, Kafka에서 발생하는 Message에 대한 Schema를 관리하는 역할을 가진다. - RESTful 인터페이스로 동작한다. - Confluent에서 공개한 오픈소스 (Hortonworks, Spring Cloud Stream 도 있음) Confluent Schema Registry 목적 데이터 호환성을 유지 및 관리하기 위해서 개발되었다. producer, consumer가 많을 수 있는 분산 시스템 환경에서, 데이터에 대한 호환성을 유지하기 위함 또한 schema에 대한 관리를 하기 위함. (data governance, 정확성, 신뢰성) 장단점 장점 단점 스키마 변경 시 발생하는 오류 방지: 메시지에 대한 변경이 일어..

개발 일지 2023.05.23

Apache Avro 란

Avro Avro 란 Avro란 Apache에서 만든 프레임워크로 데이터 직렬화 기능을 제공한다. JSON과 비슷한 형식이지만, 스키마가 존재한다. Avro = schema + binary(json value) 장단점 장점 단점 스키마를 통해 데이터 구조 및 타입을 알 수 있다. 데이터 압축 스키마 변경에 유연하게 대응 가능 binary로 serialize 되어서, 디버깅 등 상황에서 데이터 확인에 어려움이 있다. 스키마에 대한 관리가 필요하다 (관리 포인트 증가) DataType Primitive null boolean int long float double bytes string Complex record name (M): name of record, String namespace (O): 패키지, ..

개발 일지 2023.05.22

브라우저와 Redirect (feat. XMLHttpRequest)

XMLHttpRequest란? - All modern browsers have a built-in XMLHttpRequest object to request data from a server. 비동기적 통신을 브라우저에서 제공하기 위한 W3C 표준 스펙이다. 브라우저에서 제공하는 객체이며, jQuery의 Ajax 또한 XMLHttpRequest를 활용하여 구현되어 있다. Redirect 란? 요청 client에게 Server가 다른 곳으로 다시 요청하기 위한 HTTP Response Status이다. - 301 Moved Permanently: 요청한 리소스의 URI가 변경됨, redirect 시 method가 GET으로 자동 변경 - 302 Found: 요청한 리소스의 URI가 일시적으로 변경됨, re..

개발 일지 2023.05.19

#7 3rd OAuth 연동 (google)

개요 개인 서버의 인증 시스템과 타 인증시스템의 Integration에 대한 설계를 진행해 보았다. OAuth2.0 시스템은 타 인증 시스템에 연동할 수 있는 스펙을 가지고 있기 때문에 비교적 수월한 설계가 가능했다. 인증/인가 정책 인증 시스템의 기본 정책에 대한 결정이 필요했다. 1. 인증은 무엇을 기준으로 할 것인가? 2. 인가는 무엇을 기준으로 할 것인가? 결정 사항 1. 인증은 내 서버의 계정을 기준으로 한다. - 무조건 내 서버 계정으로 발급받은 토큰으로 인증을 수행한다. 2. 외부인증은 내 서버의 계정에 1:다 매핑하며, 인증된 내 서버 계정의 부가정보로 정의한다. 3. 인가는 내 서버 계정이 발급받은 토큰의 scope를 기준으로 한다. 4. 토큰 업그레이드를 통해 토큰의 인가를 관리할 수 ..

#6 Webflux기반 OAuth2서버 + gateway 구축

개요 서비스를 위해서 서버에 접근제어를 위한 인증서버가 필요했다. 개인적으로 정리한 요구사항: - 개인 서버의 계정을 기반으로 인증을 수행할 수 있어야 한다. - 내부적인 서비스 호출에 인가를 받을 수 있는 구조여야 한다. - OAuth2.0 최소 스펙 이상 동작할 수 있어야 한다. - 추후 외부 OAuth 프로토콜과 연계 될 수 있는 구조여야 한다. Gateway OAuth 2.0 서버 개요 Server Architecture 전체적인 서버구성에 추가적인 요소들이 있다. 1. Nginx의 추가 - WebServer의 역할을 하며, 개인 서버의 유일한 Entry Point - URL Prefix를 통해서 각 서버로 연동을 해준다. - Web Resource (static page)에 대한 제공을 한다...

R2DBC history 및 issue

개요 Reactive Relational Database Connectivity SQL database에서 Reactive programming을 지원하기 위해 디자인된 새로운 Open Specification R2DBC를 쉽게 사용할 수 있도록 ORM의 사용법을 참고하여 설계하였으나, ORM Framework에서 제공하는 다양한 기능을 제공하지 않음. 특징 Based on the Reactive Streams specification. - provides a fully-reactive non-blocking API. Works with relational databases. - JDBC의 Blocking 특성과 달리, R2DBC를 사용하면 Reactive API를 사용하여 SQL database로 작업..

개발 일지 2023.04.21

Mysql data directory 변경

개요 mysql 데이터를 마운트한 하드로 옮겨서 운영하거나 백업 등을 할 때 유용한 가이드 요약 번역 ubuntu 용 가이드 Data Directory 확인 // config 파일로 확인 sudo grep -R --color datadir /etc/mysql/* // DB 내에서 확인 mysql> SELECT @@datadir; +---------------------------+ | @@datadir | +---------------------------+ | /var/lib/mysql | +---------------------------+ 1 row in set (0.000 sec) Data 복사 // 옮길 폴더 생성 및 권한 mkdir /data sudo chown mysql:mysql /data..

개발 일지 2023.04.19

Gradle 이란

Gradle 이란 Groovy 기반의 빌드 툴 장점 자유로운 빌드 설정 동적인 빌드 설정 가능 손쉬운 wrapper 빠른 성능 (취향) 가독성 Build Life Cycle 초기화 단계 init.gradle, gradle.properties 환경설정파일을 read settings.gradle 파일에 포함된 하위 프로젝트(모듈) 설정 설정 단계 모든 빌드 스크립트를 평가 및 DAG Create 실행순서 결정 시행 단계 태스크를 차례로 실행 Task 빌드 단계 DAG Directed Acyclic Graph로 빌드 순서등을 가진 것 예시) java plugin DAG Repositories & dependencies Repositories 필요할 때 가져와서 쓸 수 있는 라이브러리의 집합 로컬 캐시에 저장됨..

개발 일지 2023.04.18

Flutter & Dart 개발환경 구성 (feat. IntelliJ)

Dart란 Dart 란 구글이 유지보수하는 프로그래밍 언어다. 플러터 앱을 다트로 구현한다. JIT(Just-In-Time) 컴파일과 AOT(Ahead-Of-Time) 컴파일을 모두 지원한다. 객체지향 언어 개발목적은 간단하고 생산적이며 자바스크립트로 컴파일할 수 있는 언어 Flutter란 구글에서 만들어 오픈 소스로 공개한 모바일 SDK one source multi-use -> cross-platform native-device code로 컴파일 -> 성능상 이점 모든 것은 위젯으로 이루어 짐 개발환경 구성 Intellij Plugin install Flutter SDK install (Mac) https://docs.flutter.dev/get-started/install/macos macOS in..

개발 일지 2023.04.16
반응형