/Senza

Music search API

Primary LanguageJava

Senza music service

senza preposition /’sɛntsa, ’sentsa/ without

Description

Sample Java project to provide a REST API using JAX-RS to retrieve song information from the Million Song Dataset

The project is less about the Java code but more about configuring the CI/CD pipeline.
It then looks to extend this further by introducing Servless concepts both for the application functionality and also the build process.

Assumptions

  • All of the build process and delivery of the project is using Amazon Web Services
  • It is assumed that you can clone the git repo and get the project setup in your IDE of choice.
  • I'm using Gradle as the build and dependency automation tool.

Setup (non-serverless)

Build Server Setup

The non-serverless architecture is going to use Jenkins and the CI/CD delivery pipeline, installed on a t2.micro EC2 instance.

  1. Update the OS sudo yum update -y
  2. Install Java JDK sudo yum install java-1.8.0-openjdk-devel -y
  3. Install git sudo yum install git -y
  4. Add the jenkins repo to the list of yum repositories sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
  5. Import public key from Jenkins CI to allow rpm install sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
  6. Install Jenkins sudo yum install jenkins -y
  7. Start Jenkins sudo service jenkins start
  8. Configure to start Jenkins on server start sudo systemctl enable jenkins.service
  9. Unlock Jenkins 'http://<public-ip>:8080/' - copy key from file specified
  10. Configure GitHub webhook to trigger Jenkins build (TBC)
  11. Create Jenkins build (TBC)

Data Repository Setup

To be completed

Project Setup

Fork GitHub repo

Clone repository

Setup (Serverless)

To be completed