#Reactive v Shared State Concurrency: Inventory Mgmt w/ Scala/Play/Akka & MongoDB - Example Applications
###Getting Started
- Vagrantfile is in root of project
- Puppet provisioning is in puppet directory
- To get started:
- Install Homebrew
- Install Ruby (Macs already have Ruby installed)
- brew install ruby
- If you encounter permission issues, install RVM
- Verify Ruby 2.2.1 is set
- Install Vagrant
- Install Vagrant Puppet-Install plugin
- vagrant plugin install vagrant-puppet-install
- Install Vagrant Librarian-Puppet plugin (version 0.9.0)
- vagrant plugin install vagrant-librarian-puppet --plugin-version 0.9.0
- Run vagrant up
- Once this is completed (will take a whiiiiile):
- vagrant ssh
- cd /vagrant (this is where our repo is mounted)
- Now you can cd reactive-inventory or shared-state-inventory
- Run sbt- sbt
- You can run the various commands from within sbt- run, test, compile, clean, gen-idea (to generate idea project)
###Vagrant box
- Addressable via private network adapter at 192.168.44.22
- Ubuntu box
###MongoDB for Persistence
- We are using MongoDB for our database for both apps
- Installed on our Ubuntu virtual machine via Puppet
- Puppet module- https://forge.puppetlabs.com/puppetlabs/mongodb
- Running on port 27017
- You can log into the mongo db by running mongo from inside the Vagrant box
- We are also using Embedded MongoDB for some of our tests
###StatsD/Graphite for Metrics
- We are using StatsD as an aggregator and Graphite as a metric data store and display vehicle
- StatsD- https://github.com/etsy/statsd
- Graphite- http://graphite.readthedocs.org/en/latest/
- These are installed as a Docker container
- StatsD port is 8125
- Graphite web gui port is 80
###Load Testing
- We're using JMeter
- Instructions and Test Plan can be found in load_testing directory
###Useful Links
- sbt
- Reactive Mongo
- Non-blocking Mongo driver
- http://reactivemongo.org/
- Akka
- Actor framework
- http://akka.io/
- Play framework
- Web framework built on Akka
- https://www.playframework.com/
- TrieMap
- HBC Digital on Twitter
- Dynamic, cutting edge technology company with empowered engineers
- https://twitter.com/hbcdigital
- Dana Peele
- Application developer
- https://twitter.com/Dana_S_Peele