Worked on an information sharing site for government clients. Helped transition a legacy Spring/JSP application to a modern, microservices architecture on AWS. Day-to-day tasks mostly revolved around developing Spring backends and React/Redux frontends.
Built CI/CD pipeline using yum repos and RPMs to deploy all frontends and backends.
Wrote a Bookmarks service in Golang that notifies subscribed users of pages that change in our CMS.
Wrote Jenkins shared library for super easy microservice deployments.
Wrote SDKs for Golang and Java that initialized SQS queues (for receiving) and SNS topics (for sending) messages.
Externalized configurations for frontend apps by serving /env.js, which set environment-specific configs (e.g., api url constants) on the window object.
Wrote Makefile that abstracted away kubectl for other devs, e.g., to start/stop services, rebuild Docker images, etc.
Wrote Makefile that automated the incrementing of Git SemVer tag, as well as the publishing of Bintray artifacts.
Published several JS libraries to NPM with a Lerna monorepo, including a saga to fetch the current user, a reducer to store the current user, a Navbar, as well as other common components. Used RollupJS.
Wrote Helm charts for each micro-backend (Spring Boot REST on top of MySQL) and microfrontend (NGINX container serving HTML and React/Redux JS assets.
Wrote gRPC SDKs for core microservices for inter-process-communication.
Deployed a POC microservices architecture to a local Kubernetes minikube cluster.
Researched what a microservices architecture of our app would look on AWS, using Kubernetes, Docker, and Terraform.
Wrote a module to inject environment variables into an NGINX configuration, and an Ansible playbook to deploy individual config files.
Built a small DevOps pipeline for legacy monolith using Bamboo, as well as Gradle and Ansible to deploy WARs and Solr config files.
Helped develop Rampart, a production-ready authentication and authorization system built on Spring Boot.
Developed features for Rampart's front-end using React and Redux, including a user profile screen; paginated search for user groups; paginated search for users; and a modal to set a user's 'expiration' date using react-datepicker.
Used the Redux Ducks pattern to consolidate Redux action types, action creators, and reducer logic.
Converted Redux Thunks to Redux Sagas, which are more testable and readable for orchestrating asynchronous side effects.
Wrote an open-source Java SDK for fetching data from the GDELT API.
Wrote a load testing suite using Gatling (Scala library).
Maintained and refactored a legacy Spring/JSP/Hibernate/MySQL webapp.
Transitioned legacy build from Ant/Ivy to Gradle.