Autumn
Project
####Why
Contemporary API services built to scale are largely comprised of a sizable amount of common concerns, examples being secure service endpoints, request integrity validation, application logic delegation, durable persistence, operational concerns such as auditing and logging, etc.
####What
Autumn is a collection of ready-to-use-as-is base implementations that solve the above thereby freeing up application concerns to focus on it’s principle value proposition. Autumn is used by a number of Intuit/IDEA big-data initiatives, namely: ABTesting, ClickStream Ingress, etc.
Autumn can be viewed as the artifact of disciplined engineering rigor. Stabilizing the provided resources with concrete and readily consumable components yet readily enabling implementation to vary over time without requiring complete/large-scale application re-writes/overhauls thereby allowing applications organization wide to keep pace with current state offerings, innovate more rapidly via selective leverage, etc.
####How
Autumn is a contemporary collection of readily consumable state-of-the-art Java libraries that satisfies micro-service principle concerns, namely: protocols, observability, manageability, separation of concerns, injectability (IoC), component lifecycle management, and discreet testability.
Getting involved
- Source: https://github.com/intuit/autumn
The principles of Autumn can be summarized as both a strong leverage of dependency injection and consistently specified component lifecycle management, collectively allowing for significant higher-order application leverage while at the same time allowing for rapid incorporate of new internal service implementations.
Documentation improvements are always welcome, so please send patches our way.
Contributing
The master
branch of this repository contains the latest stable release of Autumn, and snapshots are published to the develop
branch. In general pull requests should be submitted against develop
in the form of feature
branch pull requests. See the Contributing to a Project article for more details about how to contribute.
Development
Environment
% /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
% brew install git
% brew install git-flow-avh
% brew install maven
% brew cask install java
Build
% git clone https://github.com/intuit/autumn
% cd autumn
% git flow init
% mvn clean package
Run
% java -cp ./modules/exemplary/target/autumn.exemplary-*-SNAPSHOT-development-all.jar \
com.intuit.autumn.exemplary.server.Main
Maven
<dependency>
<groupId>com.intuit.autumn</groupId>
<artifactId>autumn</artifactId>
<version>1.0.20160626031951</version>
</dependency>
Test
Java
% java -cp modules/exemplary/target/autumn.exemplary-*-SNAPSHOT-development-all.jar \
com.intuit.autumn.exemplary.client.PingClient
curl
% curl http://localhost:8080/foo/proto/ping/d5bba1d7-3631-4f0a-a2c9-5ea53fb3d157
% curl http://localhost:8080/foo/proto/pings
% curl -X POST -H "Content-Type: application/json" -d '{"id":"id-1","message":"message-1"}' \
http://localhost:8080/foo/proto/ping
Future Considerations
- --tbd--
License
The code is published under the terms of the Apache License v2.0.