Choosing servers, development languages, and supporting frameworks and technologies depends on your organization size, ability to support the developed solutions, in-house expertise and skills, deadlines, as well as the set or given budgets. Using open source technologies and products will not necessarily be most inexpensive way to go as the expertise in such technologies are expensive. But initially our focus will be open source technologies and products.
Let’s work on a simple enterprise setting. To do that we need to ask ourselves several questions:
- Are there any existing systems to integrate to?
- What kind of application are we going to develop?
brand new web application?
web application integrating to an existing infrastructure?
a middle-ware application?
a middle-ware application exposed as services?
standalone desktop application?
or maybe combination of all?
- what kind of security do we need?
- what level of distribution is required or demanded?
- are we utilizing an existing code?
- where do we host the application?
- can we afford multiple hardware? or should be use virtualization?
- are we creating a cloud environment?
- what type development standards are we adhering to? SOA? Client Server? standalone?
- how many users are going to support?
- do we need clustering or failover?
Assume we are going to host the application in-house for a company that can only afford one server. But up-time and fail-over are demanded as our client is dealing with financial transaction. That alone speaks for itself that a proper security system should be in place. The client is also going to utilize an existing code and want to expose some of the business functions to business partners. The client doesn’t want to pay licenses for development environment or platform but willing to hire one or two experts to support the upcoming application. Another important requirement from the client is saving some financial documents. Let’s assume the client also needs a portal looking application.
So we have to have and support:
- Application Server
- Web Server
- Security
- Possibly LDAP / DB to support security
- A document management of sort
- Portal
- Database