Showing posts with label software deployment flexibility. Show all posts
Showing posts with label software deployment flexibility. Show all posts

Wednesday, 22 October 2014

Degrees of freedom in software

One of my current projects involves developing a new application to act as a backend setup service.

For licensing reasons this particular application cannot be deployed into our cloud environment - so I've been evaluating what options are open from various perspectives.

  • Operating System
    • Fixed to the same as other services running from the same machine.
  • Language level
    • Possibly tied to the same as existing applications - unless we can tweak chef provisioning to support multiple versions (maybe simple?).
  • Application server
    • Hopefully completely flexible, which should allow us to use the embedded approach.
  • Dependency injection framework
    • Hopefully completely flexible, although the main library dependencies are very Spring oriented.
    • Slight preference for UtterlyIdle as that matches the other components.
    • UPDATE: Due to the tight coupling of a third party library, a selection of Spring framework dependencies are bundled in the application and will be required at runtime.
  • Build system
    • Relatively flexible, but easiest with something that plays nicely with dependency management - leaning towards Gradle rather than Maven.
  • Continuous Integration and deployment
    • Need to decide between Go and Jenkins.
    • Likely to involve scp and shell scripts.
  • Monitoring and logging
    • Although this environment will have easier file system access than our cloud setup we should log to the logging service.
    • We could expose JMX profiling for monitoring of memory usage etc. on our internal monitoring infrastructure.