Software Architecture and Development! Log Out | Topics | Search
Moderators | Edit Profile

CN Discussion » General » Software Architecture and Development! « Previous Next »

Author Message
Top of pagePrevious messageNext messageBottom of page Link to this message

Hassan Ahmed
Username: Hahmed15

Registered: 09-2015
Posted on Tuesday, January 31, 2017 - 01:59 pm:   

Hi All,

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
Linux

Or any advice regarding your own career I can be reached via email at hassan.ahmed@ryerson.ca

Best Regards
Hassan.

Add Your Message Here
Post:
Username: Posting Information:
This is a private posting area. Only registered users and moderators may post messages here.
Password:
Options: Enable HTML code in message
Automatically activate URLs in message
Action:

Topics | Last Day | Last Week | Tree View | Search | Help/Instructions | Program Credits Administration