Remote Network And System Administration Job In IT And Networking

Convert AWS Deployment from Pulumi to AWS CDK

Find more Network And System Administration remote jobs posted recently Worldwide

Devops work - Mapme
Infrastructure overview - Current state
Mapme services are deployed on AWS
AWS resources in use:
Elastic beanstalk
S3
Cloudfront
Non-AWS resources in use:
IBM/Compose hosted mongodb instance
Azure Pipeline/Release
CircleCI (for legacy services)
Deployments stages:
Production: prd environment only (prd mongodb instance)
Staging: dev and qa1 environments (stg mongodb instance)
Local: developer runs a local mongodb instance against his locally running apps
Each stage is associated with a dedicated:
mongodb instance
S3 bucket (for viewer app static assets)
S3 bucket (for user uploaded media: images/video/audio)
Elastic beanstalk services per stage:
Editor (mapme-story-editor)
Viewer Proxy (main-viewer-proxy)
Api server (main-api)
Worker instance (for image processing, email sending, CF invalidation tracking, geolocation operations).
Due to legacy reasons some API calls (authentication, icon search) are implemented on the worker instance. We plan to move them to the API server and have the worker instance not accessible via public domain

CI/CD
Build
Azure Pipeline is used for building artifacts
Azure Release flow is used for deploying the artifact to the appropriate environment (there might be several environments per stage)
Flow
The developer pushes a branch to github `mapme-main` repo
If the branch has a predetermined pattern an Azure build is triggered
The build creates artifacts for elastic beanstalk services:
Api server (nodejs)
Viewer Proxy (nodejs)
Note:
Worker and Editor apps are a part of Mapmes legacy deployment
Both are built via CircleCI
It is planned to migrate both into the new build/deploy flow, but it isnt a part of current TBD scope
Deploy
Deploy is triggered via Azures ‘Release feature
Pulumi is currently used as the infrastructure-as-code framework (we want this change):
Nodejs bundles are deployed to elastic beanstalk environments
When the elastic beanstalk environments become ready, a Cloudfront invalidation is issued
Viewer deployment issue
The standard way to build vue.js apps is to have the environment variables compiled into the application via .env files (per-environment file is implied)
Since each environment requires different variables, a separate build is required prior to deploy. The build is run against the associated .env file
As a result, either all possible viewer bundles are built in advance, or the relevant viewer gets built during a specific environment deployment
Either way its a problem. Either the same app is built several times or the deploy is longer than necessary because the viewer app is built

Expected Work
The following items are expected to be completed:
Switch to exclusively to AWS-managed infrastructure-as-code deployment (replace Pulumi)
Azure build pipeline
Viewer App
Build Viewer app once during build pipeline (not during deploy)
The viewer app cannot have compiled-in environment variables
Environment variables are fetched as a separate http resource using an html tag in viewers index.html (served by the viewer-proxy):

The script is required to be infinitely cached
Env vars script url should include the build ID string. This is so that a new version is requested after the vue app is deployed (this is when environment variables may change)
Performance:
The added script tag should not cause a noticeable delay in the app load time from the users point of view
An ‘app ready event is defined as the event in which the mapboxgl map signals the ‘load event
When the environment resource url is locally cached by the browser, there should be no delay in app ready
If the environment resource url isnt locally cached, the ‘load event may be delayed by 20ms in comparison to compiled-in environment variables
Optimize Build time by taking advantage of parallel Azure jobs (we have 10 parallel jobs since our build pipeline is public)
Deployment:
Overview
The essence of the deployment process is: update elastic beanstalk apps, replace S3 bucket content, and trigger Cloudfront invalidations. All that needs to happen as optimally and fast as possible. All operations which can execute in parallel - should
Details
Do not build Viewer during deploy
Minimize overall deploy time by optimizing AWS CDK flow
Migrate Pulumi deploy scripts to AWS CDK + Cloud Formation
Pulumi config secrets are required to be moved to AWS SSM (Systems Manager Agent)
Availability
Services availability shouldnt be impaired. Use immutable elastic beanstalk updates if necessary
There should be absolutely no downtime from users point of view (as is the case today)
About the recuiter
Member since May 20, 2018
Vaniloran Elysa
from Arad, Romania

Candidate shortlisted and hiredHiring open till - Sep 2, 2020

Work from Anywhere

40 hrs / week

Hourly Type

Remote Job

$13.90

Cost

Looking for help? Checkout our video tutorial
How to search and apply for jobs

How to apply? Do you have more questions about the Job?
See frequently asked questions

Similar Projects

Help with AWS certification

Hi,
I am learning cloud computing and preparing for AWS Solutions Architect certification. I am looking for someone who is AWS certified to help me with the certification.

Thank you

Atlassian Confluence on AWS performance issue

Im looking for somebody with experience resolving confluence (performance issues).

www.(removed by Toogit Admin) is an AWS self-hosted confluence instance and since a few days it has become very slow and throwing 504s. (image based on ht...read more

Azure DevOps and Infrastructure Architect

Access, analyze current infrastructure footprint (compute, storage, network, DNS, VPN) and complete requirement gathering (HW, SW) to move individual applications to Cloud
Strong experience with CI/CD tools, Azure DevOps, IaC Pipelines, Agents,...read more

Professional Amazon Listing Creation and Optimization

Hi,

We are looking for the following -

- Professional Amazon Listing Creation - Including Photoshop graphics, Listing Optimisation, PPC setup and management.

We are launching new private label brands onto Amazon UK and nee...read more

Amazon FBA Support needed for set up a new product within my Account

I need you helping my set up my first product with Amazon FBA using my account. You should know the Amazon Platform and Fulfilment Option very well and able to explain all relevant settings. You should have had the sale of an Amazon fba product your...read more