Skip to content

Research

Nathan Karasch edited this page Sep 29, 2017 · 2 revisions

Spring Boot

Spring Boot is an opinionated approach to the creating Spring Based Applications. The Spring Framework is a Java framework which makes it very easy to make web based applications. Spring Boot makes it easy to create applications in the Spring Framework by including third party libraries and doing most of the configuration work. Spring Boot has the ability to make standalone applications, which already include a server embedded. It automatically does configuration and pom file generation, meaning it easy to get up-and-running quickly. Finally, it provides health checks and metrics for the application.

Through the addition of some of the open source libraries such as Zuul, Hystrix, RabbitMQ, and Eureka, Spring Boot has become the most common choice for creating a microservice architecture. Spring Boot does many other things such as providing ways to register applications with Facebook and Twitter and providing a uniform way to access data in Neo4J, MySQL, and MongoDB. Finally, there are easy ways to automate the configuration of Docker to make the Spring Boot application into a docker container.

This is only scratching the service of what this framework can do. We want to do some very similar things with hammer-io. However, our product will live in a completely different domain. Instead of Java, we will be targeting node.js developers.

Docker

Docker is a widely-popular containerization platform that makes it easy to deploy software with specific environment requirements. It’s sort of like a Virtual Machine, but it shares the kernel with the host machine it runs on, so it can share many common processes, keeping it lightweight and fast. There are many benefits of using docker, the first being that it takes the environment complexity out of a project. If your software needs specific libraries and other versioned software in the environment, it can be configured with a dockerfile, and those libraries and such will be sure to exist in the docker container when it gets run. This means that it works the same on any machine it’s run on, regardless of the machine’s environment.

Some other benefits include easier performance and traffic monitoring, since everything gets bundled and executed as a single file. It also comes with a lot of “security by default” measures, meaning they are turned on by default instead of requiring the user to manually turn them on. Take isolation for example. If you have one container serving your web user interface and other containers serving other services, if an attacker were to gain access to the web UI container, he would not be able to move laterally or escape the container to access files in another container or in the root system. This is only one of the many security features that come with a docker container.

Travis CI

Travis CI is a continuous integration tool that is widely used across most open source projects and by large companies like Facebook, Twitter, Mozilla, etc. It is compatible with a variety of different languages like C, C++, C#, Clojure, D, Erlang, F#, Go, Groovy, Haskell, Java, JavaScript, Julia, Perl, PHP, Python, R, Ruby, Rust, Scala and Visual Basic. Continuous integration tools like Travis CI, allow users to build, test, and deploy applications. The application is built and tested on the Travis CI servers/virtual machines. Users can choose to deploy to their own servers or to external cloud hosting services like AWS, Heroku, Azure, etc. All the required configurations are passed as a config file in the code repository. Travis CI also supports Docker and can build, pull, and push images to external Docker registries. Travis CI can also be integrated with code hosting platforms like GitHub, to run builds on code changes, new pull requests, or commits.

  • Purpose
  • Architecture
  • Roadmap
  • Purpose
  • Architecture
  • Roadmap
  • Purpose
  • Architecture
  • Roadmap
  • Purpose
  • Architecture
  • Roadmap
  • Purpose
  • Architecture
  • Roadmap

Clone this wiki locally