An overview of the advantages of cloud computing and online IDE

The article discusses cloud computing and their impact on the field of software development, and analyzes several issues of developers that can be solved using the online IDE. Usage of cloud computing in the enterprise is not new, and it is not difficult in terms of implementation. That is why it is gaining popularity. First, due to the large number of technologies that allow you to optimize internal processes. Secondly, due to the large number of giant companies and small businesses that use these technologies. Cloud computing is very interesting in financial terms. After all, they allow not spending money on building and supporting the infrastructure. One can also not worry about risks, such as, for example, equipment that affects the system, weather conditions, and so on. It takes on all these moments. Evolving of architectural solutions also increases the impact on cloud technology. A service-oriented approach to software development is becoming increasingly popular. It is less and less possible to see the usual thin client and a single server-monolith. Clients are becoming more complex, attracting part of the business logic, servers are divided into parts, each of which is responsible for a particular part of the subject area, and in some cases may not know about the existence of others. The IDE, which requires developers for programming, also has analogs on the web platform. The online IDE has its advantages for solving some tasks and has become increasingly popular lately. Users of the online IDE can create, run, and customize software that works with a simple browser. The main goal of this study is to determine the main advantages of cloud technologies in the application development process, analyze the segment of online IDE. Based on these data to identify the main situations that determine their use, predict further development, and identify principles and technologies used in this area.


Introduction
The development of technologies that simplify working with large amounts of information and allows to automate processes is inevitably growing. One of them is cloud computing technology, which replaced traditional computing technologies.
It is a technology related to services and programs that run on a distributed network that uses virtual resources. Cloud computing was developed and evolved from distributed computing and network computing. Users' data is typically processed by large cloud service providers.
The idea of cloud computing is not new or too complex in terms of technological resources and the Internet. New is the growth and maturity of cloud computing methods and strategies that provide business agility goals. The use of cloud computing in business has become much broader in the last year, as many companies are starting to provide their services online.
The number of easily accessible resources is growing, and utilitarian or service functions are the main basis for access to information technology resources and services. In this regard, cloud computing is a flexible, cost-effective and proven platform.
The evolution of reusability through service architecture is increasing the focus on business goals, as opposed to the number of computing platforms to support. As a viable alternative to resource management, cloud computing is fundamentally changing the way we look at computing solutions in trade, education, and the public sector. The use of cloud computing architecture and standards provides unique ways to provide computing solutions, as well as a variety of platforms to achieve the lowest business goals [1].

The benefits and the shortcomings of cloud technologies
There is no dispute about the impact of cloud technologies and the benefits they can bring to a variety of organizations, governments, or science. Today, largely driven by the financial crisis that has engulfed the global economy, more and more organizations are turning to cloud computing as a cost-effective way to bring solutions to market quickly. Advantages of cloud computing in reducing of implementation and maintenance costs, in mobility, flexibility and scaling increasing, in increasing of availability of high-performance applications for small and medium businesses, "greening" the data center and transformation of the IT department (focus on innovation vs. maintenance and implementation) [2].
However, there are shortcomings in the adoption of cloud computing by organizations, such as restraint on information protection and protection against unauthorized access, lack of knowledge about the privacy of service providers, lack of understanding between the organization and the cloud provider on the scope and implementation of services [3].
There are three main models of cloud service: Infrastructure as a Service (IaaS), based on equipment provided by the vendors for data processing and storage, Platform as a Service (PaaS), which provides developers with a cloud platform for applications and services and Software as a Service (SaaS), which allows users to access their programs through a browser instead of installing software on their computers. The last model provides centralized configuration and hosting, as well as automatic updates [4], which frees users from installing and maintaining software and simply provides the Internet access.

The features of the online IDE
The trend of using software on the Internet and providing them as services (SaaS) has reached the IDEs as well. To make it widespread took a long time, because it is a much smaller market than, for example, text editors. Moreover, the IDE, which developers need for programming, is also beginning to move to the web platform. The online IDE provides functionality similar to a traditional IDE, such as the ability to view, edit, and compile code, but has many benefits and has become popular recently. Online IDE users can create, run, and debug applications with only browser required, without being distracted by installing and maintaining a local version.
In addition, it should be noted that the online IDE is an integral part of learning programming languages in online courses as part of the system or as a stand-alone resource and in laboratory exercises in specialties where students study programming.
The following are the benefits of an online IDE:  mobility and portabilitythe ability to work with regardless of location, as with a high-quality Internet connection and a modern browser;  easy collaborationone of the biggest advantages of the online IDE is the ability to share code and create applications in a team;  speedmostly web encoding means that it is possible to deploy the environment instantly, find problems and fix them faster, in contrast to the encoding in desktop mode;  isolation from hardware and operating systemsno matter what operating system or hardware is used for development, they will not affect performance, as all settings are stored in a cloud environment. Today there are a huge number of online IDEs on the market that certainly create competitive, high-quality services, but most of them have limited free versions that have limited resources to use -RAM, CPU resources and storage. This is due to the fact that while data processing in cloud services is the most economical way to host, it remains quite expensive.
That is why a lot of architectural decisions should be made while developing such service. What database management system should be used, how services will communicate with each other, how to scale the entire thing, how to make it fast, robust and cheap. Such decisions should be made by a lot of people with different competencies such as developers and developer operations.
One of the most important decisions in online IDE development is choosing the way in which untrusted code, submitted by a user, should be evaluated. There are two options here: virtualization and containerization and each has its own pros and cons.
Virtualization tools emulate a real machine with its own operating system, which knows nothing about the host. This guarantees almost complete isolation, but also this means that a lot of computational resources should be spent.
Containerization tools achieve isolation by creating layers over the host operating system. This means that security vulnerabilities are possible since all environments on a single machine share the same operating system. But also this option is much cheaper than running a VM, because it does not require any overhead for keeping multiple operating systems running simultaneously, moreover, container-based virtualization has become the de facto standard for deploying programs in data centers.
Docker is the most common solution to pick when developing a web based IDE. Docker is an open source project based on many operating system research technologies: LXC containers, OS virtualization, and hash or git-based versioning and differentiation systems.
The Docker-based approach works like a virtual machine image to solve dependency problems, providing other users with a binary image in which all software is already installed, configured, and tested. The key difference between Docker images and virtual machines is that Docker images share a Linux kernel with the main machine. Sharing the Linux kernel makes Docker much easier and more efficient than virtual machines -a regular computer can run no more than a few virtual machines at a time, but it won't have a problem running 100 containers. This feature has made the Docker particularly attractive to the industry and is largely responsible for the huge popularity of the Docker. [5].
It is safe-enough and not very resource-consuming, it allows to have multiple isolated containers running on a single machine. Usually there are a couple of so-called "eval"-servers with Docker running. Each has multiple containers in which users' code is being executed. Each of these containers can have different language interpreters/compilers.
The main application server communicates with eval-servers via message queue or HTTP. Output with evaluation results from eval-servers can be passed to clients directly through web-sockets or by message passing.
Such kind of approach allows to easily scale the application by simply increasing the amount of running eval-servers. It also guarantees that in case if one of eval servers will crash, other servers including the main application server will still be up.

An overview of platforms for cloud based development
The development and analysis of cloud technologies and online IDEs are reflected in both theoretical research and scientific work, as well as in commercial projects.
The topic of cloud technologies and computing is often studied by scientists in the literature. Its high popularity is because companies are increasingly providing on-demand services instead of placing their equipment in data centers.
Numerous studies consider the benefits of using cloud technologies, such as the mobility of technological systems, which are considered as a means of implementing the virtual component of the mobility of hardware and software. Cloud computing concepts form a virtual component of hardware mobility, which is most pronounced in the category of services provided as a service -IaaS, PaaS, and SaaS.
Cloud programming environments are web applications designed to offer developers capabilities. They usually consist of a source code editor, a series of compilers or interpreters depending on the language programming, a controller, and a project or solution viewer for managing independent subcomponents. In addition to default functions and due to high competition, the programming environment has evolved, including connection to similar code, collaboration functions for code sharing, virtual machines for instant application development, and even control tools.
Online IDE is a solution to many narrow problems of developers, there is a lot of work on the development of an online IDE for various purposes. The authors of Harmonik = ++ (Web IDE) identify 45 articles found in scientific journals. [6]. Works such as "Jimbo" [7], "CoVSCode" [8], "Collabode" [9] emphasize co-programming in the online IDE. Also, some existing online IDEs support real-time collaboration in one form or another -Cloud9, CodeRun Studio, Eclipse Orion. Cloud IDE supports HTML for web development and real-time collaboration. Code Run Studio supports ASP .NET and C # .NET languages, and also allows you to exchange code via hyperlinks. Eclipse Orion focuses on web development (HTML and JavaScript) [6].
One of the most functional and complete online IDEs is AWS Cloud9 [10]. This cloud IDE, one of about 60 AWS services that integrate easily with others, will be especially handy when using AWS services to develop, deploy, or store data. Cloud9 has a set of tools installed for more than 40 programming languages, including JavaScript, Python, PHP, Ruby, Go and C++, and others.
AWS Cloud9 allows you to run the development environment on managed instances of Amazon EC2 (a web service that provides computing resources in the cloud) or any existing Linux servers with SSH support. The code editor and the built-in Cloud9 debugger have tooltips, automatic code completion, and step-by-step debugging. The Cloud9 terminal provides a web shell that allows you to install additional software, send code to the Git repository, or enter commands.
This default development environment includes all the SDKs, libraries, and modules needed to build applications. Cloud9 has an environment for local testing and debugging of AWS Lambda functions, which allows you to perform the necessary actions with the code directly, speeding up the process, and improving the quality of the code. AWS Cloud9 also has its terminal, which simplifies the quick launch of various commands and provides direct access to AWS services.

Conclusions
Online IDEs open up new opportunities for sharing and collaboration and allow, for example, programming in pairs with a colleague who is on another continent.
Most existing online IDEs are designed to work on small projects and small teams or to quickly share code in discussions or forums. Since processing large amounts of data on cloud services is a rather expensive process, the free Online IDE cannot be a full-fledged replacement for the desktop version, which can be used for multi-year projects with a large codebase. However, the advantage will be the availability of a large number of languages, the availability of chats, speed of writing, and the ability to conduct online classes.
This can also be useful when it comes to outsourcing and a colleague is a casual developer. For example, a developer needs the services of a DBA expert, who can be found online and work on a joint project immediately.
On-demand services open up new possibilities: instead of buying an expensive application, users can pay for the time used, or even use free versions.
Since many online IDEs are open source, developers will be free to use existing solutions and to develop additional modules. As the number of online services provided grows, the demand grows, which in turn opens up new directions and opportunities and is a promising area of development.
The development and analysis of cloud technologies and online IDEs are reflected in both theoretical research and scientific work, as well as in commercial projects online. The analysis of a large number of scientific papers indicates the popularity of the research topic, as well as a large number of advantages of cloud computing, and a relatively small number of quite significant disadvantages.