Amazons virtual privacy cloud service (VPC) offers great outsourcing possibilities for your less private (but still private) services.
Consider a Jenkins build server. You have got one on your local machine but sometimes it’s just too much load for your hardware. It would be nice in such a case to just push some load into the cloud. Clearly you can not just put a Jenkins server into the cloud because it will need access to various services like at least some repository (Git, SVN). To protect that cloud-internal traffic (you do not want other Amazon customers to see your source code) one should use VPC. And for a seamless integration into your existing infrastructure you will need a VPN tunnel from the Amazon VPC to your local network.
Amazon offers the possibility to create such a VPN connection to your VPC. You may set up your own VPN server in your VPC but in our opinion it is easier and cheaper to use Amazons solution. Because it seemed less pricy we first tried to just use open-source software for that VPN server.
Continuous integration servers have become a corner stone of any professional development environment. By letting a machine integrate and build software, developers can focus on their tasks: fixing bugs and developing new features. With the emergence of trends such as continuous deployment and delivery, the continuous integration server is not limited to integrating your products, but has become a central piece of infrastructure.
However, organizing jobs on the CI server is not always easy.
This blog post describes a couple of strategies for creating dependent tasks with Jenkins (or Hudson).
Our last blog post introduced how Puppet can be used to achieve Infrastructure-As-Code, and how to deploy Play applications following this practice. However, we didn’t address how the applications are actually copied to the host.
Apache Maven is a widely used build tool adopted by more and more companies to support their build process from compilation to deployment. Deploying, in the Maven world, means uploading the artifact to a Maven repository. Such Maven repositories are managed using Sonatype Nexus or JFrog Artifactory. However, this sort of deployment does not address the real provisioning of the application, i.e the deployment on the production servers.
This blog post presents a Puppet module to download Maven artifacts from a Nexus repository. This module closes the gap between the development team deploying their artifacts to a Maven repository, and the administration team responsible for installing and configuring the application.
Puppet is a configuration management tool made to ease the management of your infrastructure by making it more traceable and easier to understand. It allows infrastructure-as-code, a major trend today to deal with the complexity of infrastructure management.
On the other side, Play framework is a promoting a new way to build web applications, making this sort of development more efficient and productive. By avoiding the turn over (compilation-packaging-deployment-navigation) after every change, it makes web development fun again.
This blog post explains how you can deploy your Play applications using Puppet. This allows you to develop web apps in a very productive way and deploy them reliably.
Testing OSGi applications and services has always been a difficult challenge. Despite the development of several frameworks such as OPS4J Pax Exam, or junit4osgi, writing tests requires a non-negligible amount of code to manage the OSGi aspect of the test. Indeed, waiting and getting the service under test or releasing the service requires dealing directly with the OSGi framework and so the OSGi API. The OSGi Helper library is a small collection of classes to let tests focus on the behavior to verify instead of drowning the code in the depths of the OSGi development model.
The OSGi Helper library was developed by the Innovation department of akquinet, and was contributed to the OW2 Chameleon project.
This post explains the benefits brought by the library in comparison to plain OSGi tests.
The Play! Framework offers a new way to develop web applications. Relying on a stateless model, a light but complete stack and no big turnaround times for debugging, Play! makes developing Scala applications really efficient. akquinet is using Play! in several projects. But, what makes Play! even better and your development even more efficient is the Scala support. You can develop your application using the Scala language.
This blog post explains how to set up Play! and your development environment to develop web applications efficiently. It covers the Play framework and the Scala module installation, the integration inside the Eclipse IDE, the Source Code Management configuration and the deployment into Apache Tomcat and JBoss AS.
Scala is starting to be really popular, and there are many reasons why you might like to use it in your current projects. At akquinet we’re now using Scala inside Java applications to reduce the amount of written code and to benefit from Scala’s flexibility. However, integrating Java and Scala in the same application requires some tricks. Using Java classes in Scala is pretty straightforward; however, using Scala classes in Java is not.
Scala has several language features which cannot be directly mapped to Java, for example function types and traits. Here we will describe how these language features are compiled to Java byte code and how to access them from Java afterwards.
Play! is an open-source framework for building web applications in Java or Scala. It is stateless and promotes RESTfulness: it embraces web-oriented architecture. But best of all, Play is simple, fast and ultimately fun. It is also pretty powerful and allows the development of sophisticated web applications in an efficient way. akquinet is now using Play as the basis for different applications.
To illustrate how easy and powerful Play is, this blog post presents a miniature web application.
It’s a basic library interface, where books may be checked out and returned at the press of a button. Then, the page reloads and the updated availability status is shown.
The following is just a small sample of what Play can do. Play is a sophisticated framework with many other features that we don’t have room to represent here (such as excellent support for testing, the ability to configure dynamic routing to create clean, RESTful URLs, and access to a wide variety of modules such as user authentication), but the intention of this post is simply to show how Play can enable you to build powerful web applications quickly and easily.