About Me
Hi, I'm Tuan and I'm a person who works in the software industry, specifically, telecommunication software for end-users like Call Centers and PBX.
I have been working in this industry since June 2019. The first two years were spent getting to know Linux and VoIP systems, understanding the customer's perspective, and what they expect from a software provider. From there, I began using DevOps tools to improve the workflows of VoIP Engineers and System Admins on my team. Currently, I am deepening my knowledge of infrastructure and architecture to build scalable, sustainable systems fully automated via Infrastructure as Code.
I have many experiences with Linux OS, Services run on Linux OS (Apache2, Nginx, MariaDB, PostgreSQL, HAProxy, Corosync, Pacemaker, Zabbix, ...), and VoIP Service or VoIP Systems (Asterisk - FreePBX, FreeSWITCH - FusionPBX, OpenSIPs, Kamailio, RTPengine, Homer, GOautodial, SIPP). I also have some experience and knowledge with some DevOps tools such as Jenkins, Ansible, Docker, Kubernetes, Vagrant, and Terraform to help me automate many aspects of a system admin and more, such as deployment, monitoring, migrate data, backup, restore, load test, stress test, scale up, scale down based on user volume, ...
My final goal is to create a scalable and sustainable infrastructure that can withhold up to hundreds of million users and be known as the person behind that system.
I once heard: "Musicians don't retire — they stop when there's no more music in them." I still have a lot of music to offer.
Work Experience
TEL4VN ICT Training Center
System Team Leader
Responsible:
- Fail-over solution for high availability for FreeSWITCH ▶ Video
- Load-balance solution for scaling concurrent calls on FreeSWITCH ▶ Video
- Use ISO Debian live image to create a custom ISO image containing VoIP System which is documented to install completely offline without a connection to the internet
- Write 2-month plan and personally train interns fresh out of college, or university on SIP, RTP, VoIP Systems, and Linux so they can support all current customers and handle any running project, 3 people have become full-time employees with my guidance
- R&D new VoIP solution
- Successfully using FreeSWITCH to detect both voice and keypress in the same calls with mod_umimrcp on the FreeSWITCH server to detect voice and keypress to detect medical records for a foreign medical company
- Successfully using RTPengine to enable recordings on the SBC side instead of the PBX
- Write lua code to detect events from FreeSWITCH server and setup that lua code in mod_lua to detect specific header in SIP message and process it with custom dialplan, for example, when receiving SIP message 480 with Reason header cause is 600 and text is voicemail this is a voicemail calls
- Research, apply, document, and train DevOps tools for VoIP Engineer, System Admin, 2 people have become proficient in coding Jenkins pipeline and Ansible playbook to handle my tasks
- Code Jenkins for CI and Ansible for deployment, migrate data, backup, restore, load test, and stress test, some of them can be found on my GitHub repositories and some of them even have a video explain how it works ▶ Video ▶ Video ▶ Video ▶ Video ▶ Video
- All VoIP Engineer and System Admin responsibilities
TEL4VN ICT Training Center
VoIP Engineer, System Admin
Responsible:
- Proactively manage service performance. Provide in-depth analysis of usage trends and make recommendations for modifications to ensure services have sufficient capacity and increase/decrease capacity as needed.
- Operate Zabbix-server as a monitoring server
- Operate Homer as a SIP capture server
- Operate Kamailio as a class 4 Softswitch server with carrier_route module for routing SIP numbers for PBX server
- Operate OpenSIPs as a SBC (Session Border Control) Server with mid_registrar module and RTPengine for re-write SDP for WebRTC SIP
- Write a bash shell script for keeping a recording directory of a tenant on the FreeSWITCH server always below the given size or date but with the most recent date (tenant A keeping 5GB of the most recent recordings, tenant B keeping 10GB of the most recent recordings, tenant C keeping last 3 months of the most recent recordings, ...)
- Optimize and tuning database PostgreSQL and MariaDB or MySQL server to maximize concurrent calls and extensions can be run on a PBX server and Autocall server
- Write SIPP code, using SIPP to load test, and stress test with many scenarios to determine how many concurrent calls and extensions can be run on different specs, for example, 2 cores - 2 GB RAM - can run 800 extensions and 200 concurrent calls, 4 cores - 4 GB RAM can run 800 extensions and 200 concurrent calls, ...
- Planning backup and restore solutions when disaster happens
- Build and deploy VoIP Systems such as FusionPBX, Autocall Server based on Asterisk, and OpenSIPs on the cloud and on-premise server using a list of step-by-step commands
- Understanding how VoIP Systems running behind NAT should handle NAT
- Understanding SIP and RTP
- Works with PSTN provider
- Operate Asterisk as an Autocall server
- Operate FreeSWITCH as a PBX server
- Operate VoIP peripheral
Skills
VoIP & Protocols
System & Observability
DevOps & CI/CD
Programming
Debugging & Testing
AI & Automation
Education
Engineer of Telecommunications
Sai Gon University, Viet Nam
2016 — 2020
Courses & Certificates
Languages & Hobbies
Languages
- VietnameseNative
- EnglishFluent
Hobbies
- Movies & series
- Music
- Languages