I wanted to talk about Applications in depth before moving ahead because there are concepts which would follow such as “Release Management”, “DevOps”, “Containerization” which requires a bit of basic knowledge about applications.
First lets define what an Application is, in simple words application is a software which runs on top of your operating system helping you in achieving some kind of goal, it can be anything from Microsoft office (used for creating/editing documents, spreadsheets, emails, etc. used by a corporate employee) to your core Business application (accessed by the internal corporate employees or Customers) which runs somewhere on a network server and accessed via a browser from a client laptop/desktop/mobile, normally we would call it as a browser based application, some additional examples of application
· A computer game can also be termed as an application which provides gaming service to you.
· Internet Explorer or Chrome can also be termed as an application which helps you with browsing.
· PDF Reader / Editor for reading / creating PDF files.
The examples which I gave above are all termed as COTS (Commercial of the shelf), such applications are developed by specific software manufacturers for general usage by almost every organization and does not require much customization, beware of these jargons and their usage, they don’t mean always the same, for e.g., in some of the organizations I have seen COTS being used for customized and developed applications as well. Interchangeability of words in IT is just like someone who is newly learning English where one word can mean multiple meanings under different circumstances such as the word Bank which can have multiple meanings such as "Land alongside a river" or in Financial context, it may mean "Financial Institution licensed to receive deposits and issue Loans."
Similarly, this term called "Tailor-Made" which by definition seems something which is created for a single customer but many times it's used in the Industry as a synonym to COTS, so again these software's which I just mentioned above are all "COTS" software’s. I started off by giving examples of all End-User based Applications so that you get the basic Idea what an Application is but the main concept which I want to explain is about the corporate applications which are used by large Enterprises, here the idea of COTS applications may not work because in large Enterprises for every Application there would be N number of custom requirements needed in the application even if it’s a simple HRMS "human Resource management system" or a Complex application such as a CRM "Customer Relationship management" system, or for that matter a Complex Core-Banking-System. Every Enterprise has hundreds of custom business requirements and expectations from an application with complex processing and integrations. It's practically impossible to create a standard application for one financial Institution and use the same as it is for another institution, the other institution would definitely have their own custom requirements which have to be Developed in the Application.
So, at the most the Software ISVs (the companies who build software's) can create a Base-Version of the software and sell it to different financial systems and have the option open to develop additional functionalities in the application as per individual “Financial institutions” requirements. This type of Software/Application would be called as "Custom-Made", "made-to-order" or “Bespoke” where the application is built by the ISV (Independent Software Vendor) fully customized for the financial Enterprise or company.
Phew a Quick review here should help, we started from learning what a basic application is, then we looked at COTS examples such as End user based applications; Microsoft Office, Internet explorer , paint, etc.; then we talked about the application requirements in large Enterprises where they want to have only "Custom-Made" applications which suits their own requirements, an example for this would be the core Business applications such as Branch CBS, Internet banking, IMPS, UPI, etc., just remember that most of the Business applications in a financial institution are "Custom-Made"
Now that you know the difference between COTS and "custom-made", lets focus how these custom-made software's are technically built in an Organization.
Again before we proceed please be aware of the basic concept that every software or application "COTS or custom-made" is built by having some kind of code programmed underneath, for COTS software once the coding is done and code is packed into an application, it cannot be edited again for that particular version and the functionalities which you get out of it are fixed and you won't get anything new on-demand, "for now you can imagine this as an "exe" file which can be executed to install or run the application"
On the Other hand, the Custom-made software's are built in such a way that the code can be edited, and new functionalities can be added on-demand, although this may not happen on the fly as the coder or developer may take some time to do the Coding
So, a custom-made software has 2 major parts to it, one is the programming language and the other is the Application-server to run the Code.
Programming language
It is something which you use to enter the code or program so for e.g., it can be a simple mathematical code where you take a user input of 2 numbers and provide the addition value out of it.
Enter 2 Numbers which you want to add!
1. Number 1_______
2. Number 2_______
3. Output_______
Or for a complex instruction on an Internet Banking website where you are transferring money to Beneficiary of another Bank using IMPS, here your “Internet Banking” system may take the inputs and create an object and pass on that data to the IMPS system which may process the transaction by connecting to NPCI and once it gets a response it would make a Debit in your account in the Core-Banking-System, all this happening in real-time where the user does not have to wait and within 20 seconds the user knows whether the transaction is successful or failed, all these Applications (Internet Banking, IMPS and Core Banking) have code programmed to act upon the input and provide an output, so, the code or program is actually doing processing / calculations and providing output based on the user input
Some Popular Programming languages used in the industry are Java, JavaScript, C/C++, Python & PHP
Whenever a Developer writes a code, he would use an IDE "Integrated Development Environment" software to write the code in it which helps in writing the code with ease and then compiling it for business use, there are many IDEs available in the market and its very subjective to choose between them for your purpose, every developer may use the IDE of his own choice where the programming language is compatible and at the same time, he is comfortable using it, jotting down some popular IDEs in the market:
• Microsoft Visual Studio
• IntelliJ Idea
• Netbeans
• Xcode
Application Server
So once the Code is written completely it has to be compiled into a Package which we call it as "Build" and it would have a version number attached to it, now remember this build cannot run directly on the operating system "Except if it's something like Python which can directly execute on OS", it basically needs a container in which it can run, this container is another software which is called as the Application-server, so when you are planning to create a server to host an application, post installation of the OS the next step is to install an Application-server software and then add the package file into it so that application server can run the code which is programmed in the package or Build
Another way of understanding the "Application Servers" is that they are instances which actually host the "Business logic" as the actual Program and instructions are executed in the "Application Server."
Note: Although I said that all business applications are always "Custom-Made" but there are tailor-made business applications in the market which are common and suits all requirements for "Small and medium Enterprises" such as "Tally Accounting software"
Again reiterating, you need 2 components to run an Application:
Programming language such as C, C++, C#, Java, Javascript, Python, PHP, etc
Application server which is a container so that it can execute the code and pass on the instructions to the operating system, these are also called as "middleware". Some Popular Middleware's are:
· .Net framework
· Oracle Weblogic
· Tomcat
· Jboss
· Angular JS
Important Note: While working in an Enterprise, based on certain compliance policies in the Institution, you should not be using "Open Source" software, Tomcat and Angular are open source softwares, Jboss has both flavours (Open source and Enterprise). All Financial institutions are governed by regulatory bodies who may never allow the use of Open-source applications at least for critical applications so always remember whether you are developing a software inhouse or by a partner please make sure you are complying with the organizations "open-Source policy."