-
Focus On The Client Device
The main weapon of the App Frontend team is JavaScript/HTML5. We have designed and built our own framework for writing complex apps. This is one of those (maybe stupid) things we were not afraid to do. And we have no regrets.
Browser apps have the portability edge in the cloud and we try to provide an user experience that can match native code. The app component running in the browser communicates with its components in the cloud, using web services or other protocols for real-time communication.
-
Handling Complex Business Logic
The Cloud Backend team designs and implements an important part of the stack that supports the app component running on the client device. Except for a common core, cloud services communicate using a distributed, low-latency messaging layer.
Thanks to this flexibility, multiple programming languages are used: PHP, JavaScript (Node.js), JAVA, Erlang, Python. We also deal with multiple databases - MySQL, Elasticsearch and HubRing, our fork of Redis.
-
Dealing With Critical Components
The App Core team handles real-time servers for telephony, our HubRing database and technically any component that is very close to the operating system. HubRing is a structure-oriented database tolerant to failures. It implements n:n replication in deterministic groups and other cool features.
At this level, C is the dominant programming language. The team handles heavy stuff like memory management, debugging, profiling and optimization.
-
Making Sure Everything Works
The Testing Automation team tries to understand how things work, to make sure they work right. In practice, this is pretty hard. Due to the real-time nature of many protocols we use and the distribution of services, as nothing runs on a single computer!
The team works hard to automate testing and provisioning complexity. That's why we have created our own testing stack. And even though the stack is written in Java and PHP, the team is familiar with all the technologies of our dev stack.
-
Making The Customer Wish For More
The Professional Services team is always ready to help customers. Sometimes this is a difficult challenge, because issues must be isolated, identified and corrected against the clock. When dealing with live systems that serve thousands of end-user and real-time communication protocols, uptime becomes essential.
The team services a complex stack that starts with the operating system and ends on the customer device. This requires advanced knowledge of Linux OS, databases, networking protocols, virtualization, storage, APIs, scripting, and many more.
-
The Ground Everybody Stands On
The Infrastructure team deals with the very physical aspects - electrical power (generators, UPS), air conditioning, hardware and the software that powers our private and production clouds. In most cases, they are the guys to blame for downtime.
We are mega obsessed with the hardware we use and the way we use it. Reducing the carbon footprint is a top objective.
Software wise, the Infrastructure team is managing a lot of stuff, starting with hypervisors based on VMware, Xen, KVM, Parallels Cloud Server hypervisors and ending with complex cloud computing platforms such as OpenStack.