반응형

[완] 개인서버 개발/공통 서비스 개발(완) 7

#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)에 대한 제공을 한다...

#5 와우 경매장 데이터 적재

개요 와우 경매장 데이터를 한 시간마다 데이터를 GET해서 kafka로 publish 하며, publish 된 데이터를 sink connector를 통해 MongoDB에 raw data를 적재하는 프로세스에 대한 설계 및 구현 project 소스: https://github.com/p-bear/data-collect-server 프로젝트 - spring boot project - spring-kafka를 통한 producer 구현 - Logback을 통한 로깅 - Java HttpClient를 통한 REST 통신 CI / CD - Jenkinsfile을 통한 빌드 관리 - Dockerfile을 통한 이미지 빌드 Connector - Kafka-connect를 통한 connector 추가 및 관리 - Mo..

#4 MongoDB 설치

개요 MongoDB는 오픈소스로 공개된 NoSQL database이다. 가장 큰 특징은 RDBMS와 다르게 사전 구성된 스키마가 필요하지 않다는 점입니다. 매우 유연하게 데이터를 CRUD 할 수 있으며, DB 엔진인 wired-tiger에서는 일부 트렌젝션 기능도 가능하다고 알려져 있습니다. 이번에 구성할 시스템에서, 외부 데이터를 가져와서 저장할 목적을 가지고 있습니다. 외부 데이터의 구성을 핸들링할 수 없기 때문에, RDBMS 시스템보다는 보다 유연한 NoSQL 진영의 데이터 베이스를 사용하려 합니다. 또한 업무적으로 MongoDB를 이미 사용하고 있기 때문에 조금 더 쉬울꺼란 생각도 있습니다. 설치 wget -qO - https://www.mongodb.org/static/pgp/server-6...

#3 Confluent Platform 설치

개요 Confluent Platform은 kafka 기반의 관리 플랫폼이며, 데이터 파이프라인 구성, 스트리밍 애플리케이션을 쉽게 구축 및 관리할 수 있게 해 준다. 아파치 카프카의 최초 개발자들이 만든 회사이며, 카프카를 활용한 시스템을 구축할 때 최고로 평가받고 있다. 이를 활용해서 event 기반 아키텍처를 구성해보려 한다. Confluent Platform 설치 Confluent Hub 설치 curl http://client.hub.confluent.io/confluent-hub-client-latest.tar.gz --output confluent-hub-client-latest.tar.gz tar xzfv confluent-hub-client-latest.tar.gz sudo vi ~/.bas..

#2 Jenkins를 통한 CI/CD 환경 구축 with docker

개요 Jenkins는 개발자의 CI/CD를 지원해주는 서비스이다. Jenkins를 통해 빌드 및 배포환경을 구성할 것이다. 편리한 관리를 위해서 Jenkins는 docker로 설치한다. CI / CD Flow CI 소스는 깃헙으로 관리하며 젠킨스를 통해 빌드를 진행하고 도커허브에 빌드된 이미지를 관리한다. (+추후 테스트 자동화도 넣을 수 있으면 좋을 듯) CD jenkins를 통해 배포할 타겟 설정을 하고 도커허브에서 이미지를 받아와서 deploy한다. Docker 설치 // 설치 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin // ..

#1 데이터 스트리밍 시스템 구축 기획

개요 데이터 스트리밍에 대한 공부를 어느정도 진행했습니다. 배운걸 써서 재밌는걸 만들어보고 싶어서, 홈 서버에 해당 서비스를 구축해보려합니다. 계획은 Confluent Platform을 통해서 kafka의 메시지 큐를 활용해서 데이터를 스트리밍 하고, 해당 정보를 db 같은 저장소에 쌓은 뒤 API 서비스를 제공해서 client에 제공합니다. 컨텐츠로는 지인의 요청으로 선택된 블리자드 developer API를 활용해서 특정 게임의 경매장 정보를 client에게 제공하는 것입니다. reference가 되는 사이트도 참조해 보려합니다. 기본적으로 서버에 개발환경 세팅부터 구축하는 경험을 포스팅에 담을 예정입니다. Plan 간단하게 설계해본 구성입니다. 구축하면서 변할 가능성이 높습니다. 기본 구현 사항 b..

반응형