Blog

Our Tech Stack 2018

Has our Tech stack remained the same since 2 years ago when I last wrote about it? Hell no!

Our website pages are now served by 2 distinct tech stacks. We use a AWS ALB to sniff the request and send either to our “Legacy” PHP LAMP stack or to our modern NodeJs ReactJs stack. We are migrating pages one-by-one and building new things only on the new JavaScript app.

On the Frontend we use a tailor-made Redux/React/React-router/webpack stack using nodejs with the pm2 process manager and nginx as a reverse proxy.

On the Backend, we upgraded to PHP 7.2 but still use the original Yii 1 framework. Migrating this isn’t so important because new features are in Javascript and we have a chance to chose new technology as we build out our API.

With Google Chrome pushing the web to use https in 2018, we got onboard and set the HTTP Strict Transport Security header (HSTS) including for subdomains – we had to update many of our smaller web properties to achieve this. It really helped that TLS certifications are free now with LetsEncrypt and AWS Certificate Manager.

We changed our caching layer from MemCache to Redis. We remove Solr altogether and use ElasticSearch for all text search projects as well as our log storage. We still use MongoDB for our write-heavy storage but it’s on the way out in favour of storing in DynamoDB or ElasticSearch or AWS Redshift.

Our App is less monolithic. We run 7 Microservices and 1 has already been launched and sunsetted which I view as a win situation for Microservices because sunsetting a feature embedded inside the monolith is harder.

For DevOps, We are currently swapping our Orchestrator software from Fleet to Kubernetes hosted by AWS (i.e. EKS). We are moving our nodes from a CoreOS cluster to Amazon Linux. We are replacing traditional AWS Auto-scaling with the Kubernetes native equivalents, a cluster-autoscaler and Horizontal Pod Autoscaling. Our deployment pipeline continues to be fully-automated using CircleCI although we have a Ansible Tower instance as a single-point of failure that we’re hoping to address the next year. We continue to use NewRelic for application monitoring and PagerDuty to get us out of bed when there’s a Gremlin. Our Mean Time Between Loss of Sleep (MTBLS) hasn’t changed – it’s still satisfactory. Almost everything is Terraformed and most things fit within our immutable infrastructure philosophy – We hope to migrate the remaining snowflakes into Kubernetes in 2019, including our WordPress blogs in particular.

We are exploring Aurora and finding it very promising. The killer feature of Aurora for us is the copy-on-write clone feature which we find very useful for ETL jobs which we can run in aws data-pipelines to run very heavy SQL without affecting the website.

We added a couple of powerful SasS solutions – Periscope Data for our Business Intelligence charting and Iterable CRM which has replaced some in-house software for easier management of Marketing campaigns. We’re also about to start using JetLore for machine learning powered recommendations.

Things are changing faster than ever. I’m hoping once we have finished migrating to Kubernetes, our operations will be a bit simpler and we will be able to cope with even faster change more smoothly.

1 Comment

  • Debotos Das

    Thanks for sharing!

    Reply

Post A Reply to Debotos Das Cancel Reply