Hey
There!
About 📄
![Profile Pic](assets/avatar.png)
Felicia Ebikon
Experienced DevOps engineer with years of experience in cloud infrastructure management and automation. Proficient in AWS with hands-on experience in Terraform, Ansible, Jenkins, Github Actions, Docker, and Kubernetes. Skilled in optimizing release cycles and reducing infrastructure costs through automation and continuous delivery. I have experience working in agile environments and have strong collaboration and communication skills.Skills 🤹
Portfolio 💼
TERRATOWNS
TerraTowns is a community website that acts as a hub to discover and connect terraformers to each other's self-hosted personal websites in the style of Geocities of 2023. I wrote the infrastructure as Code (IaC) to launch my Terra House. A Terra House is a simple Content Management System (CMS) that allows me to author my own personal website and connect it to the TerraTowns network. I chose my topic of interest and built my page around existing community hubs.
- TECH STACK: Terraform, Ruby, Golang, HCL, S3, AWS Cloudfront, HTML, CSS, Bash, GIT
CRUDDUR
A micro-blogging platform that emphasizes privacy and the present moment. Cruddur platform allows users to post updates, thoughts, and photos that automatically expire after a period of time, ensuring that your personal information and conversations stay relevant and in the moment. Perfect for busy professionals, students and anyone who wants to stay connected without the pressure of maintaining a permanent online presence.
- TECH STACK: React, Python, AWS lambda, dynamoDB, postgres, Cognito, ECS, Cloudformation, codePipeline, codeBuild, x-ray, rollbar, momento, route53, honeycomb
TECHTRENDS
- GitHub Actions for CI/CD: Leveraging GitHub Actions, this project automates the Continuous Integration (CI) and Continuous Deployment (CD) processes. It includes a CI pipeline that builds Docker images and a CD pipeline for deploying applications.
- Docker Hub Integration: The CI pipeline builds Docker images for the application and pushes them to Docker Hub, making the images available for deployment.
- k3s Kubernetes Cluster: This project utilizes k3s, a lightweight Kubernetes distribution, to create and manage the Kubernetes cluster. k3s is ideal for development, testing, and lightweight production environments.
- GitOps with ArgoCD: ArgoCD is employed for GitOps-style application deployment. It continuously monitors a Git repository for application configurations, ensuring that the desired state matches the actual state in the cluster.
Key Features:
- GitHub Actions for CI/CD automation
- Docker for containerization
- Docker Hub as a container registry
- k3s for lightweight Kubernetes orchestration
- ArgoCD for GitOps deployment
- Vagrant for local development environments
- Helm for Kubernetes package management
- Flask application that lists the latest articles within the cloud-native ecosystem.
Technologies Used:
Why This Project Matters:
This project exemplifies the power of automation in modern software development. It showcases how using GitHub Actions, Docker, k3s, and ArgoCD can streamline and enhance the development and deployment processes. The use of GitOps principles ensures consistency and traceability in application deployment across different environments.UDACONNECT
Goal:
I work for a company that is building an app that uses location data from mobile devices. My company has built a POC application to ingest location data named UdaTracker. This POC was built with the core functionality of ingesting location and identifying individuals who have shared a close geographic proximity. Management loved the POC so now that there is buy-in, they want to enhance this application. I was tasked to enhance the POC application into a MVP to handle the large volume of location data that will be ingested. To do so, I refactored the application into a microservice architecture using message passing techniques. It’s easy to get lost in the countless optimizations and changes that can be made: my priority was to approach the task as an architect and refactor the application into microservices.MICROSERVICES SECURITY HARDENING AND INCIDENT RESPONSE
Background:
Security is a highly dynamic topic with ever changing threats and priorities. Newsworthy topics ranging from fortune 500 companies like Garmin paying $10 million in ransom for ransomware attacks to supply chain attacks such as Solarwinds are ever-present. Security is becoming harder as the velocity of deployments is accelerating. The Synopsis 2020 Open Source Security Risk Analysis Report revealed that 99% of audited code bases contained open source, and within those codebases 75% of vulnerabilities were left unpatched, creating risk. Incorporating security checks into each step of the build and deployment process is vital to identify security defects before they hit production. Our company CTO is worried about what our engineering team is doing to harden and monitor the company's new microservice application against malicious threat actors and payloads. In response to the CTOs concerns I will threat model, build and harden a microservices environment.Goal:
I was presented with the challenge to build a secure Microservice environment, threat modeling and hardening the container image, run-time environment and application itself. For purposes of the project, I was instructed to use a secure base opensuse image, covering considerations for the importance of using trustworthy base images and verifying the baseline. I was provided with instructions to build, harden, ship and run an environment analogous to the company's new microservice application, simplified for project purposes. In the project I will define and build a new environment from the ground-up. In a real-world scenario, I may have an existing environment that needs to be hardened or may decide to re-build parts or all net-new, regardless, the tools and techniques in the project are directly applicable. The beauty of microservices vs a monolith architecture is that all core components (image, container, run-time, application) are abstracted allowed for isolation boundaries and iterative development. In the real-world, I could choose to harden and redeploy all base-images as one project phase and tackle docker container security, kubernetes hardening and the software composition analysis, as individual project phases. The best approach is to bake these requirements and security hardening into the build and deploy process. In an enterprise setting, much of this can be enforced with security units test via CI/CD prior to deployment. Hardening the base-image and baking security into the CI/CD is beyond the scope of this project. For this project, once the Microservice environment is hardened and provisioned, I configured sysdig Falco to perform run-time monitoring on the node, sending logs to a Grafana node for visualization. To demonstrate to the CTO that the company can respond to a real security event, I simulated a tabletop cyber exercise by running a script to introduce an unknown binary from the starter code that disrupt the environment! My goal was to evaluate Grafana to determine what the unknown binary is, contain and remediate the environment, write an incident response report and present it to the CTO.UDAGRAM IMAGE FILTERING APPLICATION
- Frontend - Angular Web application built with Ionic Framework.
- Backend RESTFUL API - Node-Express application.
- The Image Filtering Microservice - It is a Node- Express application which runs a simple script to process images.
- Infrastructure as Code with Terraform and Elastic Kubernetes Service
The project is split into four parts:
DASHBOARD METRICS
- Microservices Architecture: The project embraces a microservices architecture that enables modular and scalable development.
- Docker Containers: Docker containers are used for packaging and deploying each microservice, ensuring consistency and portability.
- k3s Kubernetes Cluster: k3s, a lightweight Kubernetes distribution, is employed to create and manage the Kubernetes cluster, simplifying development and testing environments.
- Flask Application: The microservices are built using Flask, a Python web framework, providing flexibility and ease of development.
- MongoDB Database: MongoDB is used to store and manage data for the microservices, allowing for flexible, schema-less data storage.
- Jaeger Tracing: Jaeger is integrated for distributed tracing, enabling end-to-end visibility into service interactions and latency analysis.
- Prometheus Monitoring: Prometheus is implemented to collect metrics and performance data, empowering proactive system monitoring.
- Grafana Visualization: Grafana is used to visualize and analyze metrics collected by Prometheus, offering insightful dashboards and alerts.
- OpenTelemetry Instrumentation: OpenTelemetry provides distributed tracing instrumentation, enhancing application observability.
Key Features:
- Docker for containerization
- Docker Hub as a container registry
- k3s for lightweight Kubernetes orchestration
- Vagrant for local development environments
- Helm for Kubernetes package management
- Flask for microservices development
- MongoDB for data storage
- Jaeger for distributed tracing
- Prometheus for metrics collection
- Grafana for data visualization
- OpenTelemetry for tracing instrumentation
Technologies Used: