Thursday, October 24, 2013

Automation on Distributed Infrastructure

In a real-time environment, multiple applications run on multiple machines/servers. If it often a requirement for for distributed testing  which was kind of necessary for both Functional as well as Performance Testing. In the era of cloud and Agile development we cannot expect our regression tests to run for hours/days. Focus should be shifted from how often you run your tests to how soon you want your tests to run.

In my day to day testing , I have always felt the need of a framework that would help me running my functional or performance tests on the servers that run on multiple machines and interact to each other effortlessly. This need has driven me to look for a lightweight framework that would help me to communicate to any of  the servers in my distributed environment without adding much overhead on any of them.

After looking at different existing frameworks like plink,pscp,RPC,RMI,XML-RPC,Pyro etc, and then my focus went on to RPyC(Remote Python Calls). Two things that attracted me at-once when i looked at this framework were its Symmetric behavior and lightweight server.

This is what RPyC say about its features:

  • Transparent - access to remote objects as if they were local; existing code works seamlessly with both local or remote objects.
  • Symmetric - the protocol itself is completely symmetric, meaning both client and server can serve requests. This allows, among other things, for the server to invoke callbacks on the client side.
  • Synchronous and asynchronous operation
  • Platform Agnostic - 32/64 bit, little/big endian, Windows/Linux/Solaris/Mac... access objects across different architectures.
  • Low Overhead - RpyC takes an all-in-one approach, using a compact binary protocol, and requiring no complex setup (name servers, HTTP, URL-mapping, etc.)
  • Secure - employs a Capability based security model; intergrates easily with SSH
  • Zero-Deploy Enabled – Read more about Zero-Deploy RPyC
  • Integrates with TLS/SSLSSH and inetd.

For me the charm of RPyC  lies in being Symmetric and Transparent. This allures any developer who is working on a distributed environment and shows an illusion as if everything is running on a single machine. The new features of RPyC also has publishing functions as services which can be accessed based on the permissions provided while exposing those services and automatic registration of those services. This helps users to look for the service availability on his distributed servers and send his request to the corresponding server.

This coolest stuff tempts me to create a new framework that helps anyone to run his tests on a distributed machines without any configurations or setup.
Hope I do it someday :)

Reference:
http://rpyc.readthedocs.org/en/latest/



No comments:

Post a Comment