Development and management in the cloud environment is different

Source: Internet
Author: User
Keywords Cloud environment development
Tags accelerating an application application applications business business agility cloud cloud applications

The benefits of cloud computing are already evident, primarily in terms of business agility, scalability, efficiency and cost savings; many are accelerating their efforts to migrate and build mission-critical Java applications specifically for cloud environments. In a recent interview with Bhaskar Sunkara, engineering director at AppDynamics, an application performance company focused on Java and cloud applications , the challenges of developing Java applications for cloud environments and managing those applications in a cloud environment, explored.

What are the challenges for developing a cloud environment?

One of the major challenges in developing a cloud environment is understanding how the application service dependencies are handled, which is more important than understanding the programming language. Dependencies for applications and services include: Databases deployed in a distributed environment, messaging servers, or other services. These are traditionally handled by mapping service references to physical IPs during deployment, but the cloud introduces a new element of change that is unknown to IP addresses.
So, how do you know where all those dependencies are and how do you use them?

Basically, when you have a service-oriented environment, there are many services that "talk" to each other and leverage many of the infrastructure elements. At any given time, your service may use all of these other services. In a traditional static environment, you can easily understand where these elements are and then write the code. Developers can identify resources, will know the application once deployed, what resources to use. However, in a cloud environment, there is no guarantee that the application will use which IP, nor can it guarantee how it looks for services or data.

Developers need to gain insight into how to use the service in a very sensible way. The ability to efficiently find resources needs to be part of the application and there are reusable patterns for using this functionality with caution. Using lookup patterns to find the service you want to use is one of the popular ways to solve this problem. If you do not factor in these factors when building your application, you can create unmanageable scalability and refactoring issues.

As for the formal specification, J2EE uses resource mapping in the deployment process and has done a good job of resource dependencies. For example, the application contacts the database, and you contact the logical resource that provides you with the connection. When you deploy an application, map this resource to the actual database IP / URL without hard coding.

In the J2EE development paradigm, developers get the JNDI naming context so that they can find the services they need - which need to be wrapped up with the naming context of the perceptible cloud that pulls out IP dependencies. In so doing, the cloud-aware naming context is the only element that holds the "Service Locator" element, which is much easier to maintain.

Another issue facing developing a cloud environment is dealing with scale-out - what should Java developers know?

One of the basic premises for cloud computing is that it allows for horizontal scaling, but not all applications are inherently scalable, nor do they have to be scaled horizontally. You must ensure that any application in your cloud environment has Statelessness. For the on-demand infrastructure, the habit of loving local reservations breaks everything. Prepared applications must ensure that any application layer that needs to be scaled has the ability to scale out. In recent years we've started to see this happening in newer applications, but that's still a hurdle for many developers.

What if you were to propose a best-practice for Java developers working in cloud environments?

Do not localize data storage! If you do this, it's almost as if the data is localized to a Java Virtual Machine (JVM) rather than treated as a cloud. This may bring dependencies localized to the JVM. Data management should always be distributed. You must assume that the server will fail and often fail. Relational databases are no longer the norm in cloud environments. Due to so many changes in the application ecosystem, applications must be inherently stateless.

Of course, do not use physical IP or disk-based locators to find the services you need to use in your application. Rely on the physical IP extracted from the location mode or service.

That's really a good idea. Finally, what do you need to know about application testing before developers deploy applications into the cloud?

If you want to test applications in development cycles, you have the challenge of moving from a native development environment to a cloud environment if you want to see how it works in a cloud environment. Want to go from the local development environment into the cloud environment is difficult. In fact, there is no way to effectively simulate what happens to the look and feel of the cloud once the application is deployed. The integrated development environment (IDE) that handles cloud environments is also still maturing. The smoother the process of switching from a native test environment to a cloud environment, the more efficient the development cycle. In the past it was often difficult to deploy applications to the cloud environment. Now easier, but to make the whole process truly efficient and smooth development tools still have a lot of room for development.

Original name: Developing for the cloud: How developing in the cloud is different Author: Cameron McKenzie et al.

[This article is 51CTO featured translation, reproduced, please indicate the source! 】

【Editor's Choice】

Microsoft announced cloud computing platform Azure charging model details Cloud computing is intended for the long term, Microsoft cloud computing services Windows Azure has been enabled Technology Dialysis: Windows Azure Platform framework and composition Microsoft Windows Azure Platform technology analysis Close Microsoft cloud: SQL Server to Azure data synchronization Microsoft Azure Encounters Amazon EC2: Five Key Differences Five New Features in Windows Azure Cloud Computing Cloud Computing Bright Future Azure Users Break 31,000 How to Deploy Applications to Windows Azure


【Editor: Wang Yong TEL: (010) 68476606】

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.