Website Migration Project Technology Essay Example
Requirements for the Development of Web Architecture
Regarding the architecture of application, it affects a large number of factors. To successfully implement the project of site relocation, it is necessary to concentrate efforts on framing the requirements and project planning. Moreover, the communication with clients and determination of their needs is of great importance. Planning assumes reasonable evaluation of the ideas concerning the created system that saves one from spending money on the creation of incorrect system. Sometimes, users do not clearly know what they want to receive; therefore, more efforts are required to determine their requirements. Nevertheless, it is cheaper than to create something that is not necessary, bury results, and begin all over again (McConnell, 2004). This paper discusses all the details that need to be taken into account when transferring the existing website from an externally hosted solution to the internal one.
The company’s size and expectations for future growth also need to be considered at the planning stage. If a web server does not support the amount of traffic and activity on the site, the latter will run slowly adding to a bad customer experience. Therefore, anticipating where the company wants to be in the next five years, one should consider the size of the servers (Shelly, 2012). It is also necessary to predict how the increase in size will impact hardware performance by increasing the hardware resources of the server or installing additional servers.
It is also necessary to define the basic needs of customers and functional capabilities they need. It is also necessary to consider the needs of users as well as market orientation of the website, its pay ment systems, and methods of delivery. Each of these requirements affects the architecture of the application, because these characteristics should be defined before designing architecture.
Requirements for the Transfer of Web Applications with Minimal Downtime
In case of the site transfer, it is important to save the existing users. They have in a certain way saved web address in their browser tabs or on different carriers; therefore, an important condition is the repayment of domain name to bind it to own server. If it is impossible to repay this name at the previous host of services, it is necessary to redirect users to the new address of the site.
Requirements for the Implementation of Disaster Recovery Solution
In order to host the website internally, a server must be obtained. The server, along with other hardware devices, should have a safe physical area to be housed. Also, looking for the disaster recovery solution, one should decide whether or not to house the system in multiple locations. Since the company leaders are highly concerned about business continuity, multiple locations will be helpful in the event of fires and natural disasters that could interrupt business operations (Ricardo, 2012).
To increase resistance of the program system to a failure of a hard drive, it is a good option to use the mechanism of mirroring. It implies the duplication of information on two physical disks and writing a backup of data on a remote server each 2-4 hours. The remote server may be owned by foreign companies. Then, to increase the security, one may apply encryption. It is necessary to choose such encryption algorithm that is suitable for large volumes of data and provided cryptofirmness.
Justification of Software and Operating Systems
The best solution for the given software is a complex server software LAMP, in particular Linux, Apache, MySQL, and PHP. The advantages of this choice is that all of these software products are distributed as open source software that are free of charge. Also, since the work on the site for e-shopping is not something innovative, there are lots of ready-made solutions and frameworks for this task. Speaking about the programming language, PHP set of libraries, modules, tasks and frameworks for e-commerce is one with the widest opportunities. Since the time spent on the development of programs scripting language with dynamic typing is an order of magnitude smaller than strictly typed languages, we also get additional performance gains when developing the application (McConnell, 2004).
A system that is based on PHP has a high performance. The servers using PHP service about one million addresses a day. If to apply the combinations of interacting servers, productivity becomes almost unlimited. The Zend Technologies company conducted numerous tests the results of which showed higher performance of PHP in comparison with competitors. Considering prevalence of this stack of technologies, it will be very simple to find the staff, which will maintain operability of this stack of software.
Assessment of Alternatives for Site Self-Hosting
One of the possible variants of the server software is the ASP.NET platform based on the servers under control of the Windows operating system. This option has such positive features as a high performance application and relatively easy development of large projects with many developers. Accompaniment of this stack is included in the software license, but is rather high. Native support of Microsoft SQL Server is the standard de facto at the level of Oracle Database, the by operation in a business area. Considering that this project is not sufficiently ambitious by the quantity of code, the use of this set of programs will lead to excess expenditures on licensing and attending.
The option of using the technology of JSP (Java Server Pages) was also considered. Although this solution has a very high performance, application development time increases. In addition, there are problems clients have with a set JVM. In addition, there are also incidents of safety vulnerabilities.
A good alternative for the selected technologies are Ruby on Rails and Django (based on Python), although they have fewer ready-made solutions and currently face some problems with scaling and performance (Lynott, 2003).
Project Tasks. Gantt Chart
This graph illustrates the life cycle of the project. It shows that it used the waterfall model of software development. This model is the best solution in software development; in this case, it is sufficient because we have fully defined the requirements for project development, which in its essence is not innovative. The graph defined sub-processes that can be done in parallel with adequate allocation of human resources. If the project is implemented with a limited count of human resources, accordingly the timeframe of the project will increase.
Six Basic Parts of the Project
At this stage, all possible sources of requirements are developed. The development team is meeting with customers and users of the system. It identifies the major functional and non-functional requirements. The result of this phase is the system requirements specification, which is a structured collection of information that embodies the requirements of a system (Lynott, 2003).
- Server Installing
This stage is associated with the physical location and configuration of the server. It implies the installation of all necessary software and actually settings of the server, as well as the necessary physical conditions. Server installing also requires customizable band data transmission network in Internet, uninterrupted supply of electricity (possible installation of spare generators), required ventilation and cooling of buildings which are the physical location of the server. The result of this phase is a computer system that satisfies the requirements of the project.
- Architecture Design
This phase is associated with the redesign of the site. Based on the requirements for product, developers are allocated separate entities and modules of the system. Processed interface interaction between these subparts is provided. Also, actual subparts are projected including their internal data structures and interfaces. The result is a set of diagrams and documents describing how the system actually works.
- Source Code Design
This is the stage of actual system coding. Architecture is transferred to the application source code. A sufficiently detailed development of architecture is quite a trivial task. Merging elements is an important step. It is best of all to conduct incremental testing with use of regression. The result is a software system.
This stage is closely related with the process of coding. It is important to be sure of a system operation and subsystems’ correctness and check the extreme cases of possible system disaster recovery. Finally, there is a test report completed that includes a list of tests, their results, and how to playback these tests.
It is he final phase, the essence of which is to correct the erroneous behavior of the system. All people make mistakes, so this phase is allocated as a separate phase of the project.
Substantiation and Illustrations of System Architecture
For a better understanding of the system, it should be considered on two levels. At the first level, we will consider the interaction of software and operating system that serves the business needs.
A user connects to the server through Web client. The user from his browser sends requests that characterize his actions within the system. This interface is powered by HTML5, CSS, JS.
This is a software system that is actually considering user requests. It requires setting to process a large number of requests and further scaling. Apache server invokes the PHP interpreter to perform the actual PHP scripts.
PHP interpreter performs code system.
Database Management System. Settings – allocating individual users with the minimum necessary privileges will increase the resistance of the system to hacking. It is necessary to conduct settings for a big amount of requests.
Actually, a database that will store data and system settings.
System utility operating system. Executes program for a particular schedule. Conduct performance settings for back-up script every 4 hours.
This script sends backups to an external database server. Bash script that fits into the parameters of My SQL can be used to implement this.
External Remote Storage Server
It ensures the stability of the system in unpredictable situations and supports database.
Distribution installed operating system. The best option is to use Red Hat Enterprise Linux and then support of system is laid to the external company. This is effective but it involves expenditures on licensing. Another option is to use a free ware a distribution kit, but then support is laid to the service personnel.
Imagine Hard Disk
It is often used in RID1. Mirror backup is performed to save the data on separate hard drives for their constant availability, which guarantees data storage.
Hard Disk A, Hard Disk B
Two physical hard drive containing information that is duplicated.
At the next level, we will consider the actual architecture of the application source code.
It is the basic class for all users. It contains common fields that are typical to all types of users and the method of checking login.
The user from the side of Tony’s Chips which tracks “show-window” adds and deletes goods, changes the price, and so on.
Actually, it is a buyer, which can make electronic purchases. It keeps personal information of the buyer.
Basket – container for the order. This object contains information about products that the buyer wants to buy.
Records of purchases and sales also containing operation status.
The user from the drop-down list chooses the method of delivery and changes the value of the order.
Additional information on the order.
System Use Cases
The chart shows the options of system use for different classes of users. Using it, we can easily construct an option of use – the order of a pack of chips.
Variant of use: book stack of chips in the system.
- Register online (prerequisite)
- Log on site
- The list of products to choose the right pack of chips.
- Make the check out, and choose the option payment and delivery.
- Wait for confirmation from the seller.
To access the site, it is necessary to enter username and password. In case of discrepancy or lack of data, on-screen error knocks and assumptions what could go wrong.
Add to Shopping Cart
When a client finds what he needs on the site, he adds the product to shopping carts. The system automatically saves this information. The system also tracks information on the selected products and analyzes data products that often appear in shopping carts.
View Shopping Cart
The system should be prepared that the client wants to see his shopping cart and delete anything therefrom that, according to the buyer, it is not necessary. The shopping chart displays a product itself, its price, and the amount of all purchases.
Update Customer Info
The client may want to change the preliminary data about himself: his name, surname, date of birth, a card number, or location (address, zip code). The system will display the previous data and automatically update them in the process of change.
New users must enter data about themselves. There is information about oneself: name and surname, date of birth. Location is necessary for a successful sending of parcels to the buyer. Cards number helps with paying for purchases on the site.
Enter Shipping & Credit Card Info
During the purchase of a product when data payment information have not been entered, the system displays a window with the new input data that it requires. The system also asked the client if he wants to send a parcel to the address indicated at registration or to alternative locations. In this case, there will appear the window to input alternate address.
Update Product Info
Product information can be updated. The system automatically saves the new entries and updates them on the page.
After viewing goods, the client will want to pay for the selected items. If this client already made purchases on the site, credit card information is already recorded in the system. He only has to check the sufficient amount of money on a card for payment, that is solvency of a card. In case when the card is invalid or the amount is insufficient, the client will have an opportunity to enter the number of another card to pay for purchases. In addition, the client can refuse to buy and not enter new data.
One is able to view all the information on purchases, products, etc. It is displayed on the site and can be revised. The system will show information in this category.
Perform Products Search
The system of search works on keywords. It is possible to select a certain category for facilitation of search and its bigger accuracy.
The best way to know how to write good essays is by getting a sample of an essay from competent experts online.
We can give you the essay examples you need for future learning.
Free Essay Examples are here.
Support Operations for the Internally Hosted Website
After the implementation of the project, interaction with the client does not stop. There is a need for a wide range of technical support and maintenance of operating systems and electronic sales, in particular.
Current support implies fixing software defects, because as we know, no one can guarantee the exact correct system behavior. Moreover, emergency technical support is ensured in the event of an extraordinary situation; freelance workers can be used in this case.
Expanding the functionality of the software considers the fact that it is likely that there will appear the need for additional functionality.
Technical support also includes updating the software in accordance with changes in business requirements and operating conditions.
It is necessary to organize hotline advice to deal with the complaints from users about the problems of the system. It also can be made by e-mail. This problem can be solved by means of outsourcing call firms or hiring appropriate personnel. Also, there is a need to remember to care for a service; for that purpose, it is necessary to hire additional staff such as system administrator for periodic diagnosis and removal of both technical and software failures.
Evaluation of the Performance of the New Site
To determine the productivity of the application’s operation, it is necessary to conduct a row of researches including load testing of the created system.
The purpose of load testing is to simulate the feeling of the real world through generating a set of users with access to the web site. Automation enables effective utilization of tests as there is a need to emulate thousands of users sending simultaneous requests to the application or the server. To create adequate scenarios, load testers use the information daily obtained from the registration log load factor to recreate realistic load users. In some cases, log load factor is difficult to access and work with testing requirements due to the specifications, for example, testers need to understand the requirements for the system.
Load testing for the successful execution of the tests from the beginning should be carefully planned, which will reduce the time of testing. However, even with the best planning load testing should be sometimes repeated at least once; therefore, more time is spent than originally anticipated (because the tests have to build on workload).
Preparation for the test workload to successfully complete them includes:
Understanding the system requirements to load. One should examine general and the current number of users, which may be required to support the website. For the products released for the first time, there is no historical statistics.
The team of testers may be dependent on the requirements of the specification, as it is necessary to collect such specific data:
- Number of users in the form of any number of unique visits a day, a week, or a month;
- Current total number of users in the worst case scenario, peak time;
- The maximum value of the speed of queries: the number of pages served per second.
- Establishing which tools (eg, tools for testing and monitoring) to use during the tests with congestion.
It is necessary to generate a sufficient number of users and transactions to assess the capabilities and characteristics that supported real environment.
- Creating basis simulation scenarios for a single user with a web browser.
- Creating a test scenario to simulate multiple sessions established on several web browsers.
- Identifying other applications that run on the application server to record the activities of a valid system. Many programs that run simultaneously in one system may affect its performance.
- Running test (tests) several times.
- Identifying participants who will monitor the system characteristics during the test.
- Conducting formal inspection test scenarios.
- Preparing results report of the tests which will show the fixed minimum, maximum and average time of the reply of system.
Evaluating the Success
In order for the project to be considered successful, a software solution shall meet the requirements and have incorrect behavior. Therefore, to confirm the success of the project processes, one need to conduct verification and validation by means of the successful passing of the system initial tests.