SakeWiz platform : Phase 1 architecture

SakeWiz started as a small pet project and has now grown into a fully fledged Social Network platform.Since the entire project is being developed by two engineers during our free time, we had to choose the best technologies considering :
  • Rapid development
  • Easy deployment and scalability
  • Fewer DevOps tasks 
  • Use "platform managed services" as much as possible

SakeWiz Platform has mainly 6 components:
  1. API/Microservices Layer
  2. Label Scan Cluster 
  3. Brewery management Web UI
  4. Place/Bar management Web UI
  5. Administration Web UI
  6. Native Apps (iOS and Android)

API Layer(WizAPI) comprised of several microservices which implement the underlying business logic of SakeWiz.This includes microservices for :
  • User management and access control,
  • Product management, Place management (breweries and bars),
  • Search service (product search and geo-search for places), 
  • Label Scan service which sends label scan requests to "Label Scan Cluster",
  • Notification service to implement user "news feed"


API Layer is implemented using Spring Boot and underlying technologies include Amazon DynamoDB for persistence, ElasticSearch for search, Amazon SimpleQueueService, Amazon Simple Email Service, Amazon ElastisCache, Amazon S3 and some external services including Google APIs and FB API.This is deployed on AWS Elastic Beanstalk.


Label Scan Cluster(WizScan Cluster) is responsible for label recognition.The label recognition algorithm is horizontally scalable and currently running on 10 nodes. Each node stores part of registered labels in the system and recognizes its "local best matches" for the user uploaded label.Similarly, all nodes choose its "local best matches" and these are sent to the node works as the "master node".(any node in the cluster can be chosen as the master node).Finally the "master node" calculate the "best global matches".

Label recognition algorithm is developed using traditional Computer Vision algorithms using OpenCV (C++ with JNI binding)  and for inter-node communication Spring Boot RestAPI is used.
AWS Elastic Beankstalk is used to easily scale out the cluster.

Web applications(WizWeb) including, Admin WebUI, Brewery management UI and Place/Bar management UI are implemented using Apache Wicket talking to API Layer using HTTP/REST requests.
All these Web apps are deployed on Elastic BeankStalk.

iOS and Android native Apps communicate with the API Layer using REST/HTTPS

Following diagram depicts the high-level design of the Platform :




Comments

Popular posts from this blog

SakeWiz : Phase 2 Architecture