awslabs / aws-saas-boost

AWS SaaS Boost is a ready-to-use toolset that removes the complexity of successfully running SaaS workloads in the AWS cloud.
Apache License 2.0
961 stars 189 forks source link

Add elasticsearch support #32

Open AffiTheCreator opened 3 years ago

AffiTheCreator commented 3 years ago

Saas Boost already supports all major databases, but it's missing ElasticSearch.

Use Case

I have an application that needs ElasticSearch, currently, the only method to get my application running is installing ElasticSearch Inside of the container with the rest of my application. Not ideal for my use case.

Proposed Solution

Other

This is a :rocket: Feature Request

brtrvn commented 3 years ago

Adding support for other services to be provisioned in the tenant environments is definitely on the roadmap. Thank you for submitting Elasticsearch. Other community members should +1 this issue if they value Elasticsearch integration.

The pattern to follow in the current architecture of SaaS Boost would be to add a new "extension" to the tenant onboarding system. Currently, we have 2 extensions -- Filesystem and Database. You could add a 3rd for ES and it could be patterned after the existing database extension to support Amazon Elasticsearch service. You have to choose instance types, version (6 or 7), number of nodes, etc. The Settings Service would gather up all of these variables and the Onboarding Service would look them up at provisioning time to drive a nested CloudFormation stack for each tenant deployment which would configure and instantiate all of the necessary resources. This also gets wired into the main tenant onboarding CloudFormation so that the application containers are provided with the necessary credentials to connect to the cluster.

Each tenant would get its own ES cluster, just as each gets their own Aurora/RDS cluster today. In future versions of SaaS Boost we will find ways to securely support pooled or shared infrastructure.

aspcanada commented 3 years ago

In future versions of SaaS Boost we will find ways to securely support pooled or shared infrastructure.

Is there some documentation on how we, the community, can get started on making this happen?

AffiTheCreator commented 3 years ago

I'm working on a solution for this issue, here is what I have so far:

  1. tenant-onboarding-es.yaml - a new extension that gets called during the tenant-onboarding.yaml - https://github.com/AffiTheCreator/aws-saas-boost/blob/elasticsearch/resources/tenant-onboarding-es.yml
  2. Tenant-onboarding - https://github.com/AffiTheCreator/aws-saas-boost/blob/elasticsearch/resources/tenant-onboarding.yaml

EDITED: @brtrvn

AffiTheCreator commented 3 years ago
AffiTheCreator commented 3 years ago

Today I got Elasticsearch working with SaaS Boost, maybe a new branch can be created to accommodate the new files. Let me know if you want me to merge it with the new branch