Difference between revisions of "Technology Architecture For Enterprise"

From AccountIT
Jump to: navigation, search
(UI Frameworks)
Line 23: Line 23:
 
= Technologies =
 
= Technologies =
 
== UI Frameworks ==
 
== UI Frameworks ==
 +
Within the enterprise there will be several systems, all which have human interaction. The systems are:
 +
* The primary product (AccountIT); an accounting system which many people from the customer organization will interact with.
 +
** The accounting staff; providing input to the books.
 +
** Management; viewing statistics
 +
** Accountants; auditing and editing the books
 +
** System administrators; granting users access
 +
* The enterprise "ERP / CRM" system; a system containing all the customer (the CRM part) (i.e. who are using AccountIT) and managing the customers (life-cycle, i.e. getting new customers, billing them, and "cleaning up" when customers leave)
 +
** Service staff; assisting customers with issues
 +
** Billing staff; collecting usage statistics and making bills, collecting money, and updating books to ensure all outstanding are handled. I.e. the enterprise use of "AccountIT"
 +
 +
To support this wide range of usage as well as wide range of people (with different IT skills) it is  required that the User Interface is "easy to use". I.e. both for development, to support a "fast time to market", and for users who are presented with an interface that is "well known" (i.e. using UI controls that is common on web).
 +
Thus the choice of UI framework must support these two goals - both are important, with "user friendly" having highest priority.
 +
The reason for this is:
 +
* We are going with the "self-service" concept, and thus customers must be able to use the system without need for support, and an essential component for this is that the system works "as one would expect" (may not be as simple as it sounds!)
  
 
== Messaging ==
 
== Messaging ==

Revision as of 08:56, 30 May 2014

Introduction

The vision of the enterprise is providing a service with a minimum level of human intervention, thus the choice and use of technologies is essential driving the level and quantity of services that can be offered.

Technology drivers

Cloud

The core product of the enterprise will be a software service, and as the enterprise is not going to host / run a data center, the software service must be hosted / run on public cloud infrastucture (such as Amazon WebServices). With the major part of the cost associated with the cloud infrastucture it becomes essential that the service is not tightly tied with a particular cloud provider, giving the opportunity to change cloud provider should a cheaper option apear. As cloud data-centers are lease based, it is essential that the all systems (AccountIT as well as business systems) must be horizontally scalable ("elastic scaling") such that the systems can "scale down" i.e. reduce the use of "HW" resources like CPU, memory, hard-disk and network. Scaling must be automatic to provide with a "24 / 7" illusion to the user, while keeping the cost of leasing the "HW" resources is kept to a minimum. "HW" in this context is virtual as it is provided by a "Cloud provider" like Amazon WebServices.

Open Source

Likewise the software license for the 3rd party frameworks and libraries must have a cost structure that is easy to maintain and allows for dynamic growth (in connection with sudden demand). The ideal is use of Open Source framework / library code with the freedom of using it in our products without the need to "open source" it. But also proprietary software is an option as long as the license scheme provides the opportunity for use in elastic deployments, i.e. Cloud based with no fixed scaling (such as number of cores, nodes or the like)

Guiding Principles

The main guiding principle, for choosing technologies is that:

We want to have has few technologies as possible, yet for each problem we want to have the best possible technology.

  • We want few technologies, because the fewer we have, the easier they are to master. At the same time we want the best technologies, because they solve our problems in the most efficient way.
  • We should never have two different technologies for solving the same problem.

Technologies

UI Frameworks

Within the enterprise there will be several systems, all which have human interaction. The systems are:

  • The primary product (AccountIT); an accounting system which many people from the customer organization will interact with.
    • The accounting staff; providing input to the books.
    • Management; viewing statistics
    • Accountants; auditing and editing the books
    • System administrators; granting users access
  • The enterprise "ERP / CRM" system; a system containing all the customer (the CRM part) (i.e. who are using AccountIT) and managing the customers (life-cycle, i.e. getting new customers, billing them, and "cleaning up" when customers leave)
    • Service staff; assisting customers with issues
    • Billing staff; collecting usage statistics and making bills, collecting money, and updating books to ensure all outstanding are handled. I.e. the enterprise use of "AccountIT"

To support this wide range of usage as well as wide range of people (with different IT skills) it is required that the User Interface is "easy to use". I.e. both for development, to support a "fast time to market", and for users who are presented with an interface that is "well known" (i.e. using UI controls that is common on web). Thus the choice of UI framework must support these two goals - both are important, with "user friendly" having highest priority. The reason for this is:

  • We are going with the "self-service" concept, and thus customers must be able to use the system without need for support, and an essential component for this is that the system works "as one would expect" (may not be as simple as it sounds!)

Messaging

In memory data-grid

Datastore

Operation System

Monitoring

With a system landscape consisting of nodes in clusters monitoring occurs at two levels:

  • At node level with each node exposing monitoring information through a monitoring agent. A surveillance / monitoring tool used by IT operations can collect the information provided by the monitoring agent
  • An aggregated view of the cluster of nodes, displaying the overall state of the cluster of some node. The monitoring aggreate is hosted by the "Management Node"

Deployment

With cloud hosting the deployment has to be automated, as spawning a new instance and deploying the system is done via a API. There are two distinct strategies regarding deployment:

  • deployment system using an agent to deploy on the particular instance. Puppet is an example of this, where an image with the bare-bone OS and Puppet agent are deployed. When the Puppet agent starts it will look-up the Puppet master and request for its node configuration. The Puppet agent would periodically check with the Puppet master of its configuration and based on this update the node setup.
  • deployment of an image with the complete system. Packer is an example of this, where an image is "baked" with all the required components. The image is spawned when a node is requested from the cloud system.

Each of the two have pros and cons, and the choice will reflect the priority these have.



Child pages