|Posted on Tuesday, January 31, 2017 - 01:59 pm: |
Hope you guys are all doing well!
I wanted to take this opportunity to extend an invitation to any student who's trying to learn programming and software development; to send me an email and ask any questions regarding software development (design patterns), software architecture and systems architecture. This may also be beneficial for students who would like to work in the DevOps team in the future.
If you have looked into Open Stack (created by rackspace), you would have realized that all of the enterprise grade software systems use some kind of message bus, in case of openstack, it uses Advance Message Queue Protocol(AMQP); which communicates between different open stack components.
The reason for such implementations is that the systems/software designed at enterprise level must be resilient and meet criteria such as applications being fault tolerant and loose coupling of components etc; meaning that if one component was to fail e.g. Glance in open stack, the entire infrastructure won't crash. Similar to how we design network with redundancy in mind.
The software architecture that Openstack uses is called Service Oriented Architecture(SOA). In Service Oriented Architecture, the software is divided into different components e.g. in case of openstack, the two components, keystone and Glance. These components communicate with each other via either a message broker such as AMQP, web services using restAPIs or via web sockets making RPC calls (remote procedural calls)
Navigate to the following to see the Glance Architecture (http://docs.openstack.org/developer/glance/architecture.html)
There are many other software architecture and design patterns that are followed at enterprise grade software.
e.g Uber uses SOA; WhatsApp uses XMPP as the message bus.
Currently I am working on a project in which we are using N-Layer Software Architecture. Where N=3 in our case; the 1st (top) layer, is the presentation layer(what the end user sees), the 2nd layer is the business logic layer (in here; all the business logic or business rules are implemented. Think of business logic as the man in the middle which acts as a messenger between layer 1 and layer 3), and the third layer is the data access layer where the actual Web services are called via RestfulAPI.
I just wanted to give a brief introduction and wanted to communicate that during the final project make sure you guys understand how things work rather than just finishing off the project. At the end of the day, it is all code however for students interested in becoming DevOps or systems/software architect must have good understanding of systems and software architecture.
I am able to help students get started with the following:
• Programming and scripting (java, python, shell)
• Understanding Systems architecture
• Understanding Software architecture and design patterns
Or any advice regarding your own career I can be reached via email at email@example.com