Position: Full Stack Architect / Senior Full Stack developer
Category: Node.js
English level: upper
Years of experience: 9


Latest project I've worked on:

Project related to handle voice traffic over IP. We are using Freeswitch as a VoIP server and Kamailio as a load balancer and entry point of SBC. It’s a complex voice infrastructure including inside automated scaling (autoscaling group), health checks, deployments etc. Inside of a FreeSwitch is running nodejs service application that handles traffic from caller to callee and vice versa over socket connection between nodejs application and FreeSwitch ecosystem. 

Role:

Design and develop high loaded VoIP infrastructure that could handle voice traffic with AMD, speech recording and speech recognition etc (huge load on CPU). I’ve designed and developed from scratch such system by using low level scaling system as AWS autoscaling for Freeswitch boxes and Kamailio as a load balancer and as a service for scaling activities. All inbound calls are hitting Kamailio as a SBC entry point and then Kamailio as a SIP balancer handle such SDP request by using round robin algorithm and sends INVITE to less loaded Freeswitch in the group. All outbound calls goes directly from Freeswitch since no neccessary to load Kamailio and remain it in the chain (extra consuming of resources like RTP media traffic). All low level static/dynamic configurations such as Freeswitch xml configs, Kamailio dispatcher list and kamailio cfg file are working through the bash and shell scripts. All autoscaling activities (make a scalein or scaledown decision) are controlled by kamailio nodejs app that are running on each Kamailio. Voicer is a nodejs app that are controlling and making dynamics for Freeswitch from IVR. Inside of this solution a lot of tools has been taken such as SNS, SQS, cloudwatch, lifecycle hooks, auto scaling configuration, auto scaling group, ec2, lambdas, cloudwatch notification alarms and a lot of other things.