FLOWERROAD 8

[Backend] 쿠버네티스(K8S)를 시작해보자(2) - minikube & kubectl 설치

이글은 2020년에 최초 작성되었고 2021년에 일부 수정되었습니다. 개요 쿠버네티스트를 잘 이용하기 위해서는 개념 이해부터 설치, 운영을 위한 여러 command, tool, extension, addons등 알아야하는 내용이 매우 많고 그것들을 잘 알고 사용하기까지 매우 많은 허들과 고난과 역경이 있습니다. 사실 개념과 각 구성요소들을 이해하기 위해서 Kubernates 사이트에 접속해서 Document들을 읽는 시점에서 포기하는 분도 꽤 많이 있고, 모든 document들을 읽고 이해한 후에 쿠버네티스를 사용하는 사람을 아마도 없을겁니다. 대부분 어느정도의 개념을 보고 실습을 해가면서 하나하나 사용법을 읽히고, 적용 했을때의 문제점을 발견하고 수정하면서 고급 사용법이나 운영법에 대해 익히게 됩니다...

개발/backend 2022.03.16

[Backend] 쿠버네티스(K8S)를 시작해보자(1) - 이론편

이 글은 2020년 초에 최초 작성 되었고, 2021년에 일부 내용이 수정되었습니다. 개요 예전부터 가상머신이나 컨테이너화 된 워크로드 구성에 대해서는 널리 알려져 있고 많은 분야에서 사용되고 있었다. 특히 Docker가 등장하면서 이후 컨테이너화는 빠른 속도로 고도화가되었고, 이를 이용한 컨테이너 오케스트레이션인 쿠버네티스는 이제는 큰 회사부터 스타트업에 이르기까지 수많은 회사에서 도입을 하고 있는 상황이다. 가상머신(VM)과 컨테이터 둘모두 하나의 HW에서 여러개의 application을 독립적으로 실행할 수 있고 각각의 실행 환경은 격리 되어(sendboxing) 서로의 환경에 자유롭게 접근할 수 없는 형태가 되면서 자연스럽게 어느정도 높은 수준의 보안성을 제공해 주고 있다. 또한 두 환경 모두 만..

개발/backend 2022.03.06

[Backend] 공유 스쿠터 서비스 - 플라워로드 시스템 아키텍처 : AWS Architecture

플라워로드 기술 블로그 : http://blog.flowerroad.ai Notion Link : https://flyingcorp.notion.site/Backend-AWS-Architecture-4b91609eaa7441cda0ccf06714d9948b 이 글은 2020년 1월 16일에 포스팅 되었습니다. 2022년 2월 현재는 다수의 AWS service(ex. SQS, MQ, openSearch, route53, GraphQL등등) 혹은 VPC 분리등이 적용 되어 기존 구조 혹은 서비스들의 단점이나 추가 기능들을 보완한 구조로 운영중입니다. Overview 이전 두 포스팅인 플라워로드 시스템 아키텍처 - 사용되는 기술들 과 플라워로드 시스템 아키텍처 - 데이터 Flow 에서 대략적인 플라워로드 시..

개발/backend 2022.02.24

[Backend] 공유 스쿠터 서비스 - 플라워로드 시스템 아키텍처 사용 기술들

플라워로드 기술 블로그 : http://blog.flowerroad.ai Notion Link : https://flyingcorp.notion.site/Backend-Feat-AWS-584a382a5bc04f509b44da7500eef0b3 이글은 2020.12.27 일 작성된 내용입니다. 현재 아래에 나열된 기술 이외에 더 많은 서비스, 기술들을 사용하고 있습니다. 배경 저희 플라워로드 서비스는 전동 킥보드 공유서비스 시스템입니다. 개발 초기에 backend 를 어떻게 구성할지 많은 고민을 하게 되었습니다. 제가 시스템을 설계할때만해도 국내에는 전동 킥보드 공유 서비스를 하는 업체가 전혀 없고, dockless 공유 서비스(kakao T Bike같은..) 조차도 없어서 참고 할만한 대상을 찾기 위해 ..

개발/backend 2022.02.23

[Backend] 공유 스쿠터 서비스 - 플라워로드 시스템 아키텍쳐 데이터 FloW

플라워로드 기술 블로그 : http://blog.flowerroad.ai Notion Link : https://flyingcorp.notion.site/Backend-Flow-4b657c65bef14b2496acf2b41ae9aab9 도입 이전장(플라워로드 시스템 아키텍처 - 도입편)에서 우리 플라워로드 Backend 시스템에서 사용되는 기술들에 대해서 간략하게 알아보았습니다. 여기서는 설명한 기술들을 이용해서 시스템이 어떻게 구성되어 있고, 어떤 플로우로 서비스를 제공하고 있는지 살펴볼 예정입니다. 플라워로드는 크게 사용자앱, 관리자앱, 스쿠터 세가지의 Frontend로 구분할 수 있습니다. Backend 시스템 내에서 각각의 Frontend에 따른 구분은 없고, 기본적으로 Backend의 compu..

개발/backend 2022.02.23

[iOS] DI(Dependency Inject) with SwInject

플라워로드 기술 블로그 : http://blog.flowerroad.ai Notion Link : https://flyingcorp.notion.site/iOS-Dependency-Inject-with-SwInject-4cd49754024e46939eeed7cbcebeeba6 개요 Dependency Injection? Clean Architecture에서도 자주 언급되는 용어이고, Software Engineering 에서도 자주 언급되는 단어 입니다. 직역을 하자면 의존성 주입이라고 하는데 사실 직역을 했을때 용어를 보고 어떤 의미인지 이해 하기에는 조금 힘든면이 있습니다. 해당 포스팅은 DI에 대한 내용이 아니기 때문에 간략하게 설명하자면 객체간의 의존관계를 줄여서 수정에 대한 유연성을 높이고, 확..

개발/ios 2022.01.28

[Android] DI(Dependency Inversion, 의존성 역전) 적용하기

플라워로드 기술 블로그 : http://blog.flowerroad.ai Notion Link : https://flyingcorp.notion.site/Android-Dependency-Inversion-feat-Clean-Architecture-4c4cc2c066e64217bf4c4c74ee78af55 Dependency Inversion? 의존성 역전?? 혹자는 DIP(Dependency Inversion Principle)는 시스템의 유연성을 극대화 하기 위한 방법이라고 말하고 있습니다. 유연성을 극대화 하기 위해서 소스코드는 abstraction 에 의존해야하며 실제 구현체에는 의존 하지 않도록 시스템을 구성해야 합니다. 예를들어 Java의 경우 import구문은 interface나 abstra..

개발/android 2022.01.28

[Backend] AWS WebSocket 적용하기 (Feat. APIGateway, Lambda)

플라워로드 기술 블로그 : http://blog.flowerroad.ai 개요 이번 포스팅에서는 AWS의 API Gateway를 이용해서 WebSocket을 설정하고, Client의 처리를 해주는 Lambda의 사용법 및 Trigger설정을 살펴볼 예정입니다. 예제를 위해서 사용될 Client는 Android용 Application을 간단하게 만들어서 WebSocket동작을 살펴볼 예정입니다. WebSocket? WebSocket이란 OSI 7계층 중 4계층의 TCP 계층에 의존하고 HTTP 포트(80 or 443) 위에서 동작하도록 설계되었고, HTTP 프로토콜과 호환 되는 양방향 통신 방식 중 하나입니다. 기존의 일반적인 HTTP 1.x 통신방식은 client에 의해 요청을 받아서 처리하는 단방향 방..

개발/backend 2022.01.28