Week 1: Introduction PDF
Document Details
![InventiveNephrite1050](https://quizgecko.com/images/avatars/avatar-18.webp)
Uploaded by InventiveNephrite1050
Singapore Management University
Tags
Summary
This document provides an introduction to Enterprise Applications and Business Processes. It covers various aspects such as Enterprise Applications, Legacy Systems, Custom Systems, COTS Systems, Enterprise Solutions, and Networking. It also discusses how these systems interact.
Full Transcript
Week 1: Introduction Content Enterprise Applications & Business Process Enterprise 📈 Enterprise Ecosystem 🌱 Interactions Among Enterprise Applications Rol...
Week 1: Introduction Content Enterprise Applications & Business Process Enterprise 📈 Enterprise Ecosystem 🌱 Interactions Among Enterprise Applications Role of Enterprise Applications in Business Processes Enterprise Applications Legacy | Custom | COTS Enterprise applications Legacy: Custom COTS Enterprise Solutions Monolithic & Microservices Architecture Choice of Monolithic / Microservices REST APIs & JSON REST APIs 6 Guiding principles of REST JSON Networking Enterprise Applications & Business Process Enterprise 📈 An enterprise is defined to be an organization, business, company and often include both for- profit and not-for-profit enterprises Includes People | Business processes | Product & Services Examples: Week 1: Introduction 1 Manufacturing / catering / farming enterprise Small / Medium / Large-size enterprise / start-up State / state-owned / multinational enterprise / government agency Domestic / Local / Foreign enterpirse Enterprise Ecosystem 🌱 A business ecosystem is a set of companies with complementary & synergistic relationships that build strategic partnerships to deliver value for end-users / customers. Strategic partners can complement each other in the following ways: Directly supplying products to one another Combining product & services to provide a larger value-add Finding better channels to reach a target / larger market The smartphone ecosystem Example of enterprise ecosystem Week 1: Introduction 2 Within each function / department / business unit of a organization, people play different roles and produce / process different kinds of data: i.e. Finance department - CFO & Accounts payable manager Each role may be involved in various business processes and perform various activities. Activities in a business process rely on enterprise applications i.e., Excel sheets to track cash flows, web-based dashboard Enterprise Applications can be defined as: A large software system platform designed to operate in a corporate environment (Business | Government). Often consisting of a group of programs with shared business applications and organisational modelling utilities. i.e., Product Management Systems (PMS) , Customer relation management (CRM). Analytics systems, Vendor management systems etc. Interactions Among Enterprise Applications Activities performed by a person in an enterprise can easily affect other parts of the enterprise or other enterprises depending on the business process i.e., CFO views financial statement that aggregates data from Account Payable manager | Delivery notices may trigger different reactions from the courier’s systems Role of Enterprise Applications in Business Processes An activity (Interaction / Automated) in a business process often needs support/help from enterprise applications. Role of enterprise applications: To support various activities in various business process In the context of business processes, enterprise applications can accomplish the following Provide interface for a user to perform a business activity Apply predefined business rules to process input data (i.e., BPM Suite) Week 1: Introduction 3 Analyse data Produce new data Store data Retrieve data Send data to another application It is important to note: Enterprise applications supporting the various activities in a business process need to interact and collaborate with each other Applications can be reused to support activities in different business processes i.e., Microsoft Office. automate process, integration across departments, centralised data management, scability, data consistency, improved collaboration The need for enterprise applications to exchange data: An enterprise is bound to have many applications that support different business activities and handle different data relevant to the enterprise Some business process require applications from two or more enterprises to collaborate but not all activities or data can be supported/handled in one application Automating the exchanging of data among applications helps to automate business process and improve productivity Enterprise Applications In the context of business processes, enterprise applications can accomplish the following Provide interface for a user to perform a business activity Apply predefined business rules to process input data (i.e., BPM Suite) Analyse data Week 1: Introduction 4 Produce new data Store data Retrieve data Send data to another application An enterprise is bound to have many applications that support different business activities and handle different data relevant to different parts of the enterprise Some business processes require applications from two or more enterprises to collaborate Not all activities or data can be supported or handled in one application Automating the exchange of data among applications helps to automate business processes and improve productivity Legacy | Custom | COTS Enterprise applications System Characteristics/attributes Legacy systems: Outdated computing software/hard which is still in use Legacy: Able to meet the needs it was originally designed for but does not allow growth Its older technology does not allow it to interact with newer systems Uses old technologies which may not be widely used now Use wrapper service which exposes functionalities of legacy systems to higher levels using web services Issues caused by existing legacy systems Instead of offering companies the latest capabilities and services – i.e., Cloud computing and data integration, Legacy systems keep the company in a business rut Reasons for using a legacy system: Investment – High overhead costs to invest into a new system Week 1: Introduction 5 Fear – Resistant to change Difficulty – Hard to migrate data over from older system to new system Problems caused by legacy systems Costly & Futile maintenance – No chance for growth and it is used to just keep the system running → Wasted costs Data is stuck in silos – A collection of data held by one group which is not easily/fully accessible by other groups in the same organization → Challenge of a legacy system Compliance is much harder → Unable to meet changing regulations and compliance Security is weakened everyday Unable to integrate with new system ✅ Pros & cons of using legacy systems Pros: Cons: Provies the required functionality UI / Data format may highly likely to be incompatible with newer technologies, making May be more stable it harder to exchange data with newer applications Expensive to maintain Custom software/applications is the process of designing/ creating/ deploying Custom and maintaining software for a specific set of users/ functions/organisations As compared to COTS, custom software aims at a narrowly defined set of requirements Custom software & its development is often referred to as bespoke software Week 1: Introduction 6 Performed by in-house development teams or outsourced to third party companies Require the familiar steps of requirement gathering, code construction, testing and deployment. Using the same methodologies of Agile, DevOps or RAD (Rapid Application Development) Internally built may make it easier to use it for the processes within the same enterprise and exchange data with other applications, but may be harder to work with applications from other enterprises Exposes to keyman risk Efforts include: Application customisation – modifying COTS application to support individual requirements Application modernization – Critical role in maintaining the viability of the business’s custom software to meet changing needs Application management – Makes software effective by support tasks like installation, updating, performance and availability optimization etc. Importance/use of custom software Efficiency Scalability Lower integration costs Profitability Independence ✅ Pros & cons of using Custom systems Pros Cons Can hit 100% of a business needs Week 1: Introduction 7 Able to protect trade secrets for the company Can be costly and unreliable in building the required functionality May make it easier to use for processes within the same enterprise Potentially high costs & long development time A COTS (commercial off-the-shelf) product is one that is used "as-is." COTS COTS products are designed to be easily installed and to interoperate with existing system components. Almost all software bought by the average computer user fits into the COTS category: operating systems, office product suites, word processing, and e- mail programs are among the myriad examples. One of the major advantages of COTS software, which is mass-produced, is its relatively low cost. If using standardized technologies or providing documented APIs, easier to exchange data with other applications COTS products can generally be used out of the box In practice, COTS products must be configured to achieve the needs of the business and be integrated to existing organisational systems Functionality can be extended through customisation but is generally not supported by the service provider → New issues/things to oversee for the company ✅ Pros & cons of using COTS systems Pros Cons Don’t need expertise to use / custom it Not as flexible & not as adaptable → Built to satisfy i.e. 80% of a company’s requirements Week 1: Introduction 8 Hardware not needed → Can rely on In such situations the company can either vendor (Dependent on the nature of the customise the COTS or change business solutions) rules so that software will fully match the business requirements - Can get vendors Consists of industry best practices which may be partnered with the COTS’ Less risk - Large customer base - Tested vendor to customise business & Proven applications Customer support from vendor 🚨 COTS are MONOLITH in nature You can’t an off the shelf microservice COTS can’t be a microserivce which is readily off the shelf! Enterprise Solutions An enterprise solution is defined to be one or more enterprise application that produce, process or exchange data in order to fulfil business requirement Alternative definition: Enterprise solutions are designed to integrate multiple facets of a company’s business through the interchange of information from various business process areas and related databases. These solutions enable companies to retrieve and disseminate mission-critical data throughout the organization, providing managers with real-time operating information Support business activities & process Store a lot of persistent data - Relational database | NoSQL databases Persistence "The continuance of an effect after its cause is removed". In the context of storing data in a computer system, this means that the data survives after the process with which it was created has ended. Week 1: Introduction 9 Data is often accessed and processed concurrently - i.e., Account balance can be accessed by two users at the same time → How do we address this problem (Out of scope) Provides user interface screens - Allows the same data to be processed/viewed in different ways in different processes by different people Not all processing happens real-time online In certain cases, offline (batch) processing is used - Generating financial statements Can be large/small , simple/complex Processes data based on business logics/requirements i.e., for every 10 dollar spent, one loyalty point is awarded 🚨 Challenge lies in making applications easily adaptable to changing requirements A large enterprise often has application that was built over many years using different technologies - Legacy | COTS | Custom Challenge lies in enabling data exchange among various kinds of applications Monolithic & Microservices Architecture Microservices & Monolithic Architecture recap Choice of Monolithic / Microservices Week 1: Introduction 10 REST APIs & JSON REST APIs REST is an acronym for Representational State Transfer REST has its own guiding principles & constraints which needs to be satisfied if a service interface needs to be referred to as “RESTful” REST uses the standards of - HTTP , URL / URI , JSON, XML, JPEG etc Transport format - JSON over HTTP / HTTPS Data format - can be anything (No specification about data format) Note: Data being transferred between micro services for a business process is business data only, other data i.e., HTML is not considered business data (Considered presentation data) 6 Guiding principles of REST Uniform interface Week 1: Introduction 11 By applying the principle of generality to the components interface, the overall system architecture can be simplified & the visibility of interactions is improved Multiple architectural constraints aid in obtaining a uniform interface, guiding the behaviour of components. The following four are constraints to achieve a uniform REST interface Identification of resources The interface must uniquely identify each resource involved in the interaction between the client and the server Manipulation of resources through representations The resources should have uniform representations in the server response. API consumers should use these representations to modify the resources state in the server. Self descriptive messages Each resource representation should carry enough information to describe how to process the message. It should also provide information of the additional actions that the client can perform on the resource. Hypermedia as the engine of application state The client should have only the initial URI of the application. The client application should dynamically drive all other resources and interactions with the use of hyperlinks. Client-Server Client-server denotes a relationship between cooperating programs in an application, composed of clients initiating requests for services and servers providing that function or service. The client-server design pattern enforces the separation of concerns, which helps the client and the server components evolve independently Separation of concerns is a recognition of the need for human beings to work within a limited context By separating the user interface concerns (client) from the data storage concerns (server), the portability of the user interface across multiple platforms is improved while also improving the scalability through the simplifying of server components Note: As client & server evolves, we need to make sure that the interface/contract between the two does not break Week 1: Introduction 12 Stateless Statelessness mandates that each requests from the client to the server must contain all of the information necessary to understand and complete the request The server cannot take advantage of any previously stored context information → Thus the client application must entirely keep the session state Cacheable The cacheable constraint requires that a responses should be implicitly/explicitly label itself as cacheable/non-cacheable If the response is cacheable, the client application gets the right to reuse the response data for equivalent requests and specific period Week 1: Introduction 13 Layered system The layered system style allows an architecture to be composed of hierarchical layers by constraining component behaviours → i.e., in a layered systems, each component cannot see beyond the immediate layer they are interacting with Code on demand (Optional) REST allows client functionality to extend by downloading and executing code in the form of applets/scripts Downloaded code simplifies clients by reducing the number of features required to be pre implemented. Servers can provide part of features delivered to the client in the form of code, and the client only needs to execute the code app = Flask(name) Examples of REST Operations: General REST Characteristics: Client-server model Week 1: Introduction 14 Simple Uniform interface (Follows the 1st guiding principle of REST Architecture Each API is language & platform agnostic - Implementation & deployment can be in any language / platform of choice, allowing it to be invoked on any OS and with any language Typically supports only HTTP / HTTPs transport Supports a variety of data formats - TEXT / JSON / HTML / XML / OData / JPEG / MP4 Self describing data - As long as JSON over HTTP / HTTPs, languages can use it Layered systems - Allow proxies / gateways / firewalls / caches inbetween client and servers Each component cannot see beyond the immediate layer they are interacting with Each API is often stateless - Each API invocation is in isolation, the client needs to send all the necessary context info to the server at the same time when invoking the API Client needs to send all necessary context information to the server at the same time when invoking the API Lack standards for security, transactions, etc. that need to keep states JSON JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. Week 1: Introduction 15 JSON Structure: A collection of name/value pairs An ordered list of values JSON Syntax rules: Data is a collection of values Data is in name/value pairs - {”Price”:21.5} Data is separated by commas Curly braces hold objects Example of JSON format for recording books An object is an unordered set of name- value pairs A name is a string, also referred to as an attribute or a key A value can be of any allowed type Pairs are separated by commas Name and the value in a pair is usually separated by a colon ':' Square brackets hold array An array is an ordered list of zero or more value of any allowed type Array values are usually separated by commas A VALUE CANNOT BE 20-30 the dash JSON Characteristics Self describing - Both readable by humans & machines Allows hierarchy - Nested data Can be parsed and used by any programming language on any OS - i.e., Python - import json Week 1: Introduction 16 Can use JSON Schema to define and validate the correctness of JSON data - Defines the structure of JSON explicitly (Cardinality, structures etc) Lacks standard / efficient ways to search through data, unlike other data storage mechanisms Networking Stack comprises many communication protocols at various layers: HTTP, FTP ; TCP, UDP ; IP ; Ethernet, Network card, Network cable ip address Each machine may belong to multiple (sub)networks at the same time, can have multiple IP addresses at the same time too and different machines in different (sub)networks can have the same IP address at the same time Two machines can communicate with each other as long as they have a way to identify each other in a network But in reality, there are many other factors in play that may affect the communication, e.g., firewalls installed on the machines and in the network may block the communication; the machines may belong to different (sub)networks and they don't recognize each other's IP; etc. DNS (Domain Name System) Act as a host-name registry on the network Week 1: Introduction 17 Map host names to IP addresses ipconfig To check addresses Check DHCP server, DNS server, Gateway hostname To check hostname ping Tool used to test whether a particular host/machine is reachable across a network Program sends packets to the target host and listens for reply from the target May need to use ping to troubleshoot, to see if a remote machine can be reached loop back address 127.0.0.1 is the standard IP address referring to the current host If a program tries to connect to 127.0.0.1, it is immediately looped back to the machine that currently runs the program Usually used for testing purposes, where you do not have another machine for conducting the test localhost Port numbers Used to identify a particular process/application running on a machine so that the data sent to the machine can be relayed to the right application URL POST http://127.0.0.1:5000/book/9781449474453400 Request POST /book/9781449474453 HTTP/1.1 Content-Type: application/json Host: 127.0.0.1:5000 { "title": Week 1: Introduction 18 "Tale of Zelda", "price": 33.40, "availability": 21 } HTTP/1.0 400 BAD REQUEST Content-Type: application/json Content-Length: 109 Access-Control-Allow-Origin: * Server: Werkzeug/0.16.0 Python/3.7.4 Response Date: Sun, 29 Dec 2019 16:11:32 GMT { "code": 400, "data": "9781449474453", "message": "A book with the isbn13 has already existed." } Load balancer Route network traffics to different receivers and dispatch processing workloads among them Client/user may not need to know the actual servers’ IPs; they can communicate with the servers indirectly via intermediaries in the network, such as gateways, routers, load balancers Network address translation Map one network address (e.g., an IP and a port number) to another by modifying the address information in network communication data Week 1: Introduction 19 So that, data can be (re)routed by the network to a different receiver or can appear to come from a different sender An IP in one network may not be accessible from Internet or another network, enable communication across networks, through a device that has IPs in both networks E.g., the router at our home Week 1: Introduction 20