🦔

FinTech × AWS × OpenShift × Modern Application Development

2023/02/17に公開

1. Introduction

I am currently working as a tech lead in the FinTech solutions business.
Finance-related projects have many rules and are difficult to develop using the latest technologies.
Fortunately, the projects I work on as tech lead are developed using the latest technologies such as OpenShift, Ktor and Flutter.
So I want to present some of the technologies in use in the project.

2. Technology Stack

2.1. Client-side | Native

  • Dart
  • Flutter
  • Flutter InAppWebView Plugin
  • Provider
  • Firebase Cloud Messaging(FCM)
  • AppsFlyer

Client-side | Native

The client-side(Native) uses Dart as the language and Flutter as the mobile app framework.
Only minimal screens such as the login screen are implemented in Native App.
Other screens are implemented in Web App.
The Flutter InAppWebView plugin makes this possible.
This plugin allows you to add an inline webview, to use an headless webview, and to open an in-app browser window.

2.2. Client-side | Web

  • TypeScript
  • Vue 3
  • Vue CLI 3
  • Composition API
  • Vue Router
  • Tailwind CSS
  • Storybook
  • Jest
  • Nginx
  • Google Analytics 4
  • Visual Studio Code

Client-side | Web

The client-side(web) uses TypeScript as language and Vue 3 as framework.
Vue CLI 3 is used for the command line tool instead of Vite, and the build artefacts (e.g. HTML/CSS/JS) built with Vue CLI 3 are published using Nginx, a web server.
For state management, Provide/Inject provided by Vue is used.
State management for this Web App is not complex, so external libraries such as Pinia and Vuex are not used.
The client-side(web) is published using technologies such as ROSA and EKS.

2.3. Server-side | REST API

  • Kotlin
  • Ktor
  • Netty
  • Exposed
  • Kotest
  • Koin
  • MockServer
  • Amazon Aurora PostgreSQL
  • IntelliJ IDEA

Server-side | REST API

The server-side(REST API) uses Kotlin as language and the framework is Ktor for Kotlin instead of Spring Boot for Java.
The OR mapper uses Exposed, a Kotlin ORM developed by JetBrains and Flyway is used for schema management and migration.
Koin is used for Dependency Injection(DI) and Kotest and MockServer for testing.
The server-side(REST API) is similarly exposed in technologies such as ROSA and EKS.

2.4. Container Platform

  • Kubernetes
  • Minikube
  • Red Hat OpenShift Service on AWS(ROSA)
  • Amazon Elastic Kubernetes Service(EKS)
  • Amazon Elastic Container Service(ECS)
  • Amazon Elastic Container Registry(ECR)
  • Istio / Maistra
  • Helm
  • Kustomize
  • Kiali
  • Prometheus
  • Jaeger
  • Docker / Podman
  • Terraform
  • Amazon CloudWatch Synthetics
  • Opsgenie

Container Platform

I use Terraform as an Infrastructure as Code(IaC) tool because I want to manage the infrastructure of our system as much as possible in code.
I also use Kustomize and Helm for Kubernetes manifest management.
Around monitoring, I use tools that are commonly used in projects using Kubernetes.
CloudWatch Synthetics is used for health checks and Opsgenie for incident management.
This provides a mechanism for rapid escalation to engineers in the event of a fault.

2.5. CI/CD

  • Argo CD
  • GitHub Actions
  • Amazon CloudFront
  • AWS WAF
  • Amazon Route 53
  • AWS Certificate Manager(ACM)
  • Amazon S3

CI/CD

CI/CD is mainly implemented using Argo CD and GitHub Actions.

2.6. Other technology

  • GitHub
  • Swagger
  • Dependabot
  • Clair
  • SonarCloud
  • Postman
  • Burp Suite
  • Backlog
  • Slack
  • Teams

The code is managed on GitHub and Swagger is used for REST API specification management.
For efficient development of REST APIs, tools such as Postman and Burp Suite are used.

Appendix: Japanese version of this article

Modern technology stack of the FinTech Solutions business
https://techblog.finatext.com/technology-stack-fintech-solution-6bae02917359

Discussion