LB Console is an application that wraps functionalities provided by BigIp F5 UI to configure load balancer. BigIP F5 load balancer is one of the extensively used load balancer (at least in e-commerce domain).
Though BigIp F5 has very effective UI but in terms of usability users are required to have some understanding of how F5 works.
Things get much complex for teams who want to integrate monitoring application, deployment application & other planned activities. As there is a learning curve required to understand basic working of F5 plus the API integration at multiple levels feels like an overhead for the consumer.
An application that performs all required transactions with BigIp F5. That exposes REST endpoints that can be used for integration with other applications.
Have a simpler UI that is user friendly & fast. A tracking mechanism that keeps log of all critical transaction.
- Python Django framework
- Python Boto3
Implementing a simple RESTful approach proved to be extremely useful as it enabled teams to easily integrate the same with deployment strategies and moving application from data centres to cloud (AWS & OpenStack).
As the volume of pools and servers configured at F5 were moderatley large ~3k servers under ~1K pools, read calls from LB Console to BigIp F5 were considerable. Hence to minimise # of calls to F5 Django DB based caching came in handy.
This enabled the application to query directly to F5 only when the required data was not present in the cache. Result from every F5 query being saved in cache with a short TTL (300s) ensured that data being served almost instantly & F5 query calls only in the event of cache miss occurrence.
ElasticSearch based logging each of the create/update/delete transaction helped in keeping critical data readily available for consumers. User interface being the primary consumer to display logs per server or pool, later the same was integrated with our IRC channel for users to query the logs from IRC itself.
Conventionally Django projects were shipped as tar files in production or in some cases deployment via Git was practiced. So to bring some reliablility and standardisation in deployment approach Docker came very handy plus usual benefits of using containerisation.
LB Console application also solves complex problems like:
- Traffic switching within data centres.
- Managing DNS entries in AWS Route53.