Novi Ardi | Backend Engineer - Devops
[email protected] | https://aredhi.com | https://github.com/emaniacs | https://t.me/aredhi | https://www.linkedin.com/in/aredhi | +6281372224949
Objective
Highly motivated and results-oriented IT professional with 12+ years of experience in programming and system administration. Adept in frontend and backend development with strong expertise in JavaScript, React, Node.js or Typescript. Passionate about creating responsive, user-friendly applications and seeking a challenging fullstack developer position that leverages my frontend skills in a dynamic environment.
EXPERIENCE
-
Freelance Fullstack Engineer, Devops Engineer
-
Install and setup kubernetes with custom image at 11 phisical server
This project to migrate our client from Google Cloud into their phisical server using our custom linux distro with kubernetes installed
Challenges:
-
Migrating more than 50 apps include the setup for the database and network
Solution: List all of the database, network, create the same solution using opensource version
-
Network issue
Solution: Create bonding ip and use keepalive to ensure the server always on
-
-
Develop nodejs app(React, Expressjs & Mongodb) feature to work with AI api
Create a project to help user create a document, poem, book and image with some help by AI.
Challenges:
-
rate limit on ai server
Solution: use rate-limit and cache some response
-
-
Setup CICD for a Flask app using github action to AWS instance | 2024
-
Setup CICD for a Nodejs app using gitlab pipeline | 2024
-
Develop nodejs api(React, Expressjs & Mongodb) authentication | 2017
-
Develop image manager app (PHP, Laravel & Mysql) authentication | 2018
Develop a Laravel app, including auth and premium feature for paid user
Challenges:
-
Its only use one server for the whole application, including the database
Solution: Enhance nginx for cdn and static caching, redis for auth and user response cache
-
-
Develop api app using expressjs, mocha as testing at 2015 from Upwork clients
-
Develop full apps aplication using expressjs, react and tailwindcss
-
Develop web app for managing document (Python, Django) | 2000
The goals was to provide an apps that able to convert a do word document, format doc and docx to pdf.
Challenges & Solution
- The user should be able to edit and save a document and export to pdf later.
- the design while editing and save to pdf need to be identical, since i use gd at the server we need to really understand about the command to provide the same design.
-
-
Research Engineer|System administration, tirtoid(https://tirto.id), DKI JAKARTA(Hybrid), JAN 2022-present
tirto.id is indonesian online new media based on DKI Jakarta
-
Optimized SQL queries by analyzing data and adding relevant indexes to PostgreSQL.
Data inside the PostgreSQL being huge and inefficient when application do a query
Challenges:
-
How to improve application and reduce the execution time on query
Solution: Do analyzing the log, remove unused query, reduce n+1 problem while query to application, enhance indexing system, recreate huge table, do partition on the table.
-
-
Improved backup processes by migrating databases and files to multiple cloud storage solutions.
-
Set up a WordPress environment with MariaDB database.
-
Set up our monitoring system using Grafana, Prometheus and Loki its for replace elasticsearch, logstash and kibana
Since Elasticsearch primarily need to use our search system and became bloated if put more log in it.
Challenges:
-
Loki created for containerized ecosystem and its really hard to install in phisical server
Solution: Build loki using source in our server
-
-
Established a multi-cloud server infrastructure for applications.
-
Successfully containerized over 20 applications using various languages like PHP, Python, and Node.js.
-
Migrating server infrastructure from a monolithic architecture to Kubernetes, resulting in reduced costs and improved application performance.
-
Integrated Kubernetes with existing infrastructure for smooth migration.
-
Implemented ArgoCD as a GitOps tool for continuous deployment, facilitating faster and more manageable deployments.
-
Successfully migrated servers from one data center to another.
-
Improved MongoDB performance by implementing indexes and optimizing document size.
-
Enhanced Redis performance through configuration adjustments.
Challenges:
-
There so many item has no expired Solution: Use LRUCache mode
-
Size of redis getting bigger and keep save into database periodically Solution: Use efficient time on save RDB, remove some unused data
-
Upgraded outdated server hardware. Upgrading our phisical server from Ubuntu 18.04 to 22.04
Challenges:
-
There are so many breaking changes on this upgrade
Solution: Migrating one by ony server and exclude the server from the balancer so the current application still working correctly
-
-
Recreate image proxy apps (imageproxy) from Golang to Python The reason we recreate the application
- we need to crop gif extension
- we need support to use local storage to enhance caching with nginx
-
-
Platform Developer, KERB (Australia/Singapure; Remote), JUN 2019 - JAN 2022
KERB is a parking management platform, it using IOT tech to solve some parking issue.
-
Enhanced application test coverage, leading to reduced bugs and increased application stability. There are about 300 testing and not correctly worked, most of them failed due to unupdated endpoint
Challenges:
-
Need to understand more context before update the endpoint and test
Solution: Write and comunicate with other before update the test, create documentation for every endpoint
-
-
Maintained existing APIs.
-
Optimized API performance by simplifying logic and implementing effective caching strategies, fix index in database and backup and flush some table with huge size
-
Reduced messaging costs through caching. We use Twilio as sms client when we need to send some notification to user, but there are some case the notification send to user multiple times and it cost us more than normal.
Challenges:
-
Ensuring the sms duplicate before reject the notification
Solution: Update the proses to include the user, transaction and type of message and use that as key for caching
-
-
Developed APIs for clients to create applications leveraging company data. Develop an opensource library so our data can be used by tenant or other developer
-
Developed new parking logic, which improved client experience in Canada. Challenges:
-
How to build a new parking logic and smoothly integrated with the current system.
Solution: Create different environment for the process including the test and mockup so its not disrupt existing apps.
-
-
-
Fullstack Developer, tirtoid, DKI JAKARTA, JAN 2016 - JUN 2019
-
Designed and constructed server infrastructure. I involved in every decision on creating infrastructure for the company Challenges:
-
to create an application isolated each other
Solution: create multiple production app and a de-normalize apps as bridge for each of application
-
-
Streamlined server installation processes using Ansible.
-
Assisted other teams with application setup and configuration.
-
Implemented Nginx load balancing for improved performance.
Setup more than 30 nginx server act as load-balancer and cdn for the applications
Challenges:
-
How to build a static, load balancer so request the application can be reduced and not consumed to much memory
Solution: Build nginx with production setting and for some case need to build with openresty.
-
-
Set up SSH server, NFS share, and backup systems.
Configure more than 5 phisical server and 40 vm using ssh, nfs and backup system with strict security to protect the data
Challenges:
-
We only have 2 ip public that need so its more challenging since all of request will pass through 1 server
Solution: use floating ip and vpn to secure the connection, all of ssh server only accept the connection via ssh key
-
-
Established CI/CD pipelines using Jenkins to accelerate deployments.
-
Deployed PostgreSQL as the primary database for cms applications.
-
Deployed Mongodb farm as the primary database for frontend applications.
-
Implemented Redis replication to provide application caching.
-
Set up WordPress with MySQL for writer applications, similar to previous configurations.
-
Increased API performance through de-normalization, migrating data from PostgreSQL to MongoDB.
-
Customize an image proxy apps (imageproxy) to fit with our requirements
-
Developing a Node.js, React, and PostgreSQL application for image upload, management, and editing.
Application used by writer/uploader team to manage the image, uploading, auto insert the data based on image metadata and auto crop based on the image ratio
Challenges:
-
It need to done using the same server with multiple application in it, it sometimes need library that other library used too.
Solution: use virtualenv for every application
-
We need to use imagick and exiftool to process the image, since it call another process, it might has botleneck in the > [!IMPORTANT]
Solution: use messaging like RabbitMQ to process the image using different process with the main process.
-
-
Developing an application for serving uploaded images through a CMS.
This application used as frontend/cdn for the image uploaded by writer, it using nginx as balancer and static server to help reduce the application load. Originally it using imageproxy(https://github.com/willnorris/imageproxy) at beginning and then i recreate using Python.
-
Developing an application to populate keyword data used by other applications.
An Express and Mongodb as database and using simpel CRUD method
-
Developing an application to upload and manage document using Laravel
-
Developing our internal tracking system, data used by our recommendation system
Using golang and vanila javascript we built an application that track some user behaviour and send the data to backend. Javascript for the frontend and Golang as backend. Its including some shell script and awk to process the log and save regularly to database
Challenges:
-
How to create a tracker and log management system and work fast enough in frontend and backend
Solution: using vanila javascript so its can avoid adblock apps in browser, it using openresty as webserver so we can directly parse the log data and send to database
-
-
Implemented an article recommendation system that increased website page views.
Using Python with pandas, nltk to process the log data became a recommendation, we use user behavioud and content based recommendation while generated the recommendation article for user
Challenges:
-
How to build a recommendation using limited computer resources?
Solution: Use 50k latest data while generated the recommendation
-
-
-
Set up a message queue system using RabbitMQ as a broker.
- Set up error reporting system using Sentry on premise
- Set up our monitoring system using Elasticsearch, logstash and kibana
-
Web Developer, detikcom, DKI JAKARTA, JUL 2013 - DEC 2015
- Enhanced application performance by migrating to a more efficient framework.
- Reduced integration complexity between databases, JSON files, PostgreSQL, and Elasticsearch by creating a reusable PHP library.
- Developed internal APIs to improve the web application functionality.
- Developed pressphoto apps
- Involved in develop cnnindonesia.com api and frontend
-
Head Web Development, Maxindo Content Solution, DKI JAKARTA, Jan 2013-JUN 2013
- Led and managed the web development team.
- Successfully launched a new feature, “Indowebster Radio,” which provided users with faster access to information and radio streaming.
-
Web Programmer, Maxindo Content Solution, DKI Jakarta, AUG 2011 - AUG 2012
- Created and maintained file-sharing features.
- Optimized API performance.
- Developed a membership-based store application.
EDUCATION
- STT Pelita Bangsa, Bekasi Bachelor of Informatics Engineering 2011
SKILLS SUMMARY
- Python - 12 years experience
- Shell scripting - 11 years experience
- PHP - 10 years experience
- Nodejs/Javascript - 11 years experience
- TypeScript - 3 years experience
- Elm - 2 years experience
- Golang - 5 years experience
- Web server - 11 years experience
- Database(SQL) - 12 years experience
- Database(noSQL) - 7 years experience
- Cache management - 7 years experience
- Server management - 7 years experience
- CI/CD, Jenkins, ArgoCD - 7 years experience
- Kubernetes - 5 years experience
- Terraform - 3 years experience
- Debugging - 12 years experience
- Log management - 7 years experience
- Linux administration - 9 years experience
COURSES
-
Data Science Fundamentals: Machine Learning, algorit.ma (May 2020)
-
Text Data Mining & Natural Languange Processing, ITTC Universitas Ahmad Dahlan (Apr 2020)