Your shopping cart is empty!
In Dharma Web Studio, we usually work with 3 or 4 levels of work environment, throughout the development cycle of a website, an ecommerce, or a web application.
That said, you may be wondering, what is a development environment?, what does this have to do with my e-commerce website or my website?, ¿What can happen if someone has developed a website for me or my company, and I don't have a pre-production development environment?. To answer these questions, we wanted to write this article.
When it comes to web development, the simplest and clearest definition we could provide of a development environment is that it is the same as a web server, with certain allocated resources, software and libraries installed, and a specific configuration. Then we could say that a server is an application that is able to meet the requests generated by a client (in most cases you can understand this as a web browser like Firefox, Google Chrome, Safari, or other) and return a response accordingly.
Said clearly, a server is the development environment that a web application programmer requires, and allows him to write his code, design and layout an interface, generate and consult results of various kinds, and serve or visualize the changes.
In our case, a development environment in its most basic version is usually made up of:
Beyond these basic characteristics, the processes that define them, their technical characteristics and the software, libraries and versions of these, which we use to structure an environment, may vary depending on the characteristics of each project.
This allows us to develop web applications in a safe, error-free way, with differentiated environments for programming, testing, sharing results with customers and allowing them to perform tests and practices, and finally publish an application available to any internet user , error free, robust, stable.
It is useful and appropriate to define different “environment levels” or servers used in the development of a web application. Each of them are used for a specific purpose, and have certain advantages over the others at a certain time during the work process. We can say that it is convenient to distinguish from: a) development environment, b) test environment, c) pre-production environment and d) production environment.
The development environment, are servers that can be located on the computer of the programmer who develops the code or a local work server. They are usually inaccessible from another computer. It is the workspace where the programmer develops the application code, performs initial tests and checks if the application runs correctly with that code.
Its main advantage is that the programming files do not need to be uploaded to a server in the cloud to execute and test the changes. The files are manipulated directly in this environment. In this way, consulting the changes made on the screen, or the operations made by certain lines of code, can be done quickly.
In addition, since information is processed locally, it usually means better response times and shortens time during the initial phase of development. Once the implementation has been tested and the developer considers that the code works correctly, it is possible to move the application to a test environment.
A test environment is usually located on a server in the cloud and should have characteristics similar to the local environment and other environments can be used in the work cycle. This allows minimizing incidents in later stages; and that the application does not suffer any friction when deployed in its final environment.
The main advantage of having a development environment is the possibility of allowing application administrators, QA team, tester-customers, or other team members to interact with the application at an early stage of development in order to know the behavior of the application, training, and perform tests. In this way, having a vision about whether the application being developed is free of errors and if it meets the needs of the project.
The development server, not only allows you to have an environment in which other team members can test the application, it also allows you to check the behavior of the application, when it requires receiving responses from another server. For example, suppose the case of the integration of a POS in an online store. Having a development environment allows us to configure the POS in test mode and perform purchase operations in an online store. The POS to process purchase responses, sends a response to our application about whether the payment has been completed or not. These responses would be impossible to be processed in a local development environment; and it is clear that it would be inconvenient to have to perform these tests in a real environment; where real users might have trouble processing the purchase.
The pre-production environment, also called the integration or staging environment, should have a technical configuration identical to the one we will set in the production environment. The main purpose of this environment is to emulate the production environment in order to test the updates and ensure that they will not corrupt the application on the production servers when they are deployed. This minimizes system dips and cutting services in production.
In the absence of a development environment, this environment can function to carry out demonstrations, or training and training of the end users of the application taking its place also as a testing environment.
The production environment is the environment where the application is finally run where end users access and where they work with the business data themselves. It is a server that has the same characteristics and configuration that the pre-production server will have; although in this case it could be configured by more than one server, for purposes of load balancing in applications that require an infrastructure capable of handling heavy user traffic and thousands of concurrent connections.
The usual way to move the code of the applications, between the different levels of development environments, is to use continuous integration systems based on GIT. Git is a code subversion system. Once configured and implemented in the development environment, it allows you to track each and every one of the changes that are made in the code, and define anchor points in those changes, which are called "commits". On the other hand, a continuous integration system allows, among other things, to facilitate the deployment of changes in each environment, from a GIT repository, in an orderly and predictable way.
Typically, web application developers write code in the development environment and move that code through commits to test (or pre-production) environments, when the test environment is unnecessary or excessive for the application we are working on. ). The test environment allows for advanced tests in the application and also for other team members to perform tests. Have a QA or tester team, consisting of internal staff members and external reviewers (for example, users key), allows you to test the application in depth. QA reports are sent back to developers, who are responsible for resolving errors ("bugs"). After all errors are resolved, a new version is delivered in testing.
This process continues until the QA team declares that the trial version is "ready to be released to production." The environment manager (sometimes called "release manager") raises the version found to the pre-production servers and in the absence of errors in the deployment, finally to the servers in production to be consumed by the audience.
Typically, as time progresses, orders for new features, or changes in the functionality of the application, are made, with which the developers write new code and the development-testing-pre-production-production cycle begins again.
The principles of a development environment can then be summarized in the following scheme: