This term has been repeated said when I was in college. Back then I had an ideal point of view that everything should be integrated as one. Why? Because it would be a great and massive where the subsystems could easily talk or communicate each other. Compared to the Service Oriented Architecture (SOA), it was a nightmare to me. You develop the system part by part and you make them communicate with a web service, SOAP was the popular way of doing it. You can imagine the effort that you need to give to build that kind of application? I said no to SOA, until recently.
These days, various programming languages are around us. Some people use Ruby, some use Java, some use Python, some use PHP, and so on. So if I still hold on to my ideal that everything should be as one, I guess we will be less creative, we will be less innovative. Why? Because people who work using Ruby will never cooperate with people using other languages. Just imagine the infinite number of application that we can develop if developers can work and communicate each other. This is just one reason and let me tell you another one.
Let’s say I develop an app using Ruby on Rails which is used to record any kind of log activities. My friend with another language, let’s say PHP, create a website which require him to record every user activity on his website. Would you suggest my friend to make his own log system? It’s not wrong either, but wouldn’t it be easier for him to just send the information to my server and I will keep them safe. That’s what people doing right now! You can see there are so many service that people made which you can use for your application like website analytics, server performances, payment systems, and so on.
These facts show me that a lot of things inside one app is so naive. It will take time to develop and it will take your time to scale your app. Beside that, we have other option to establish the app communication like REST or RPC. For you who hates SOAP, maybe you can consider using REST or RPC. It’s not the same, so don’t forget to know for what you’re going to use it.
Welcome to the cloud era! You can develop with any kind of programming languages and, fortunately, you can contribute for people’s good by making it as a service. It’s good, isn’t it?
Actually, you know that everything could happen in digital world, right?
SOA (defined by the OASIS Reference Model for SOA#) is an architectural para- digm, a way of architecting a framework for matching needs and capabilities. A key feature of SOA is support for integrating services that are owned and managed independently. SOA is a core pattern underlying Web 2.0, and several other pat- terns (such as the Mashup pattern and the Software as a Service pattern) rely on it. An application server offering a SOAP endpoint where consumers can invoke a service to get a stock quote is a classic example of this pattern. — “Web 2.0 Architectures, by James Governor, Dion Hinchcliffe, and Duane Nickull”