Git is a distributed revision control and source code management (SCM) system with an emphasis on speed. Git was initially designed and developed by Linus Torvalds for Linux kernel development; it has since been adopted by many other projects. Every Git working directory is a full-fledged repository with complete history and full revision tracking capabilities.
Ruby on Rails
Ruby on Rails, often shortened to Rails, is an open source full-stack web application framework for the Ruby programming language. Ruby on Rails is not to be confused with Ruby, which is a general-purpose programming language, on which Ruby on Rails runs. Rails is a full-stack framework, and features a routing system that is independent of the Web server.
Ocean requires Rails 4.2.8 or later. The Ruby version must be 2.3.1 or later.
Phusion Passenger (informally also known as mod_rails and mod_rack) is a free module for the Apache HTTP Server and nginx for deployment of Ruby applications, including those built using the Ruby on Rails framework. It is available as a gem package and is supported on Unix-like operating systems. Phusion Passenger also supports arbitrary Ruby web applications that follow the Rack interface.
Varnish is a caching HTTP accelerator designed for content-heavy dynamic web sites. In contrast to other caching reverse proxies, Varnish was designed expressly as an HTTP accelerator. Varnish supports request rewriting as well as load balancing and failover using both a round robin and a random director, both with a per-backend weighting. Basic health-checking of backends is also available.
Varnish is a core part of the Ocean architecture. Via Varnish, Ocean implements the extra HTTP methods
BAN, as well as code for massaging HTTP header info to handle CORS preflight requests, and via URL rewriting allowing browsers (including Internet Explorer) to access the API in exactly the same way as a remote service.
Amazon DynamoDB is a fully managed NoSQL database service that is offered by Amazon.com as part of the Amazon Web Services portfolio. DynamoDB differs from other Amazon services by allowing developers to purchase a service based on throughput, rather than storage.
DynamoDB spreads data and traffic redundantly over a number of servers using solid-state drives, allowing high-speed, low-latency, predictable performance which scales to the limits of Amazon without degradation in access times. It offers integration with Hadoop via Elastic MapReduce.
Ocean uses its own gem,
ocean-dynamo, to implement a near drop-in replacement for ActiveRecord.
In September 2013, Amazon made available a local development version of DynamoDB so developers can test Dynamo-backed applications locally.
HtmlUnit is a headless web browser written in Java. It allows high-level manipulation of websites from other Java code. It also provides access to the structure and the details within received web pages. HtmlUnit emulates parts of browser behaviour including the lower-level aspects of TCP/IP and HTTP. It allows Java code to examine returned pages either as text, an XML DOM, or as collections of forms, tables, and links.
In Ocean, HtmlUnit is used by web applications to render the HTML of pages for the benefit of web crawlers, so that, the completely dynamic Ocean web sites can be indexed by search engines, just like static sites.
Web Application Testing in Ruby (or Watir, pronounced "water") is a toolkit used to automate browser-based tests during web application development. This automated test tool uses the Ruby programming language to drive Internet Explorer, Mozilla Firefox, Google Chrome, Opera and Safari, and is available as a RubyGems gem.
RSpec is a behavior driven development (BDD) framework for the Ruby programming language, inspired by JBehave. It contains its own mocking framework that is fully integrated into the framework based upon JMock. The framework can be considered a domain-specific language (DSL) and resembles a natural language specification.
Cucumber is a tool for running automated acceptance tests written in a behavior driven development (BDD) style. Cucumber is written in the Ruby programming language. Cucumber projects are available for other platforms beyond Ruby. Cucumber allows the execution of feature documentation written in business-facing text.
AWS CodePipeline is a continuous delivery service you can use to model, visualize, and automate the steps required to release your software. You can quickly model and configure the different stages of a software release process. AWS CodePipeline automates the steps required to release your software changes continuously.
AWS CodeCommit is a fully-managed source control service that makes it easy for companies to host secure and highly scalable private Git repositories. CodeCommit eliminates the need to operate your own source control system or worry about scaling its infrastructure. You can use CodeCommit to securely store anything from source code to binaries, and it works seamlessly with your existing Git tools.
AWS CodeBuild is a fully managed build service that compiles source code, runs tests, and produces software packages that are ready to deploy. With CodeBuild, you don’t need to provision, manage, and scale your own build servers. CodeBuild scales continuously and processes multiple builds concurrently, so your builds are not left waiting in a queue. You can get started quickly by using prepackaged build environments, or you can create custom build environments that use your own build tools. With CodeBuild, you are charged by the minute for the compute resources you use.
AWS CodeDeploy is a deployment service that automates application deployments to Amazon EC2 instances or on-premises instances in your own facility. AWS CodeDeploy provides two deployment type options:
- In-place deployment: The application on each instance in the deployment group is stopped, the latest application revision is installed, and the new version of the application is started and validated.
- Blue-green deployment: The instances in a deployment group (the original environment) are replaced by a different set of instances (the replacement environment).