Skip to content
Glenn Engstrand edited this page Sep 5, 2022 · 37 revisions

Welcome to the news feed micro-services wiki!

This is an educational project where I explore how effective various modern open source technologies (components and programming languages) are in making scalable, heterogeneous data-source micro-services.

I blogged about the first Clojure implementation circa 2014.

https://glennengstrand.info/software/architecture/oss/clojure

I covered the first Scala implementation and how it was different from the Clojure version in terms of code.

https://glennengstrand.info/software/architecture/oss/scala

I blogged about the performance differences.

https://glennengstrand.info/software/performance/scala/clojure

I blogged about how this micro-service performs when running with MySql, with PostGreSql, and with Docker (predates K8s).

https://glennengstrand.info/software/performance/mysql/postgres/docker

I returned back to Java and blogged about how the DropWizard version (circa 2016) compared to the Clojure version of the news feed.

https://glennengstrand.info/software/performance/clojure/dropwizard

For something completely different, I blogged about a news feed micro-service implementation in Node.js and how it compared with the DropWizard version.

https://glennengstrand.info/software/performance/nodejs/dropwizard

I documented my research into how this micro-service performed when integrated with ElasticSearch and with Solr for keyword based search.

https://glennengstrand.info/software/performance/elasticsearch/solr

I stood up the DropWizard version of the service and ran the load test on Amazon Web Services, Google Compute Engine, and Windows Azure and blogged about what I learned.

https://glennengstrand.info/cloud/performance/aws/gce/az

I developed the news feed service in python and compared that with the news feed service written in Node.js

https://glennengstrand.info/software/performance/nodejs/python

I developed the news feed service using Hyperledger Composer (circa 2018) and compared that with the news feed service written in Node.js

https://www.infoq.com/articles/evaluating-hyperledger-composer

I Kubernetesized the first six implementations of the news feed service and load tested them on the managed Kubernetes offerings of both Amazon and Google.

https://glennengstrand.info/software/performance/eks/gke

I blogged about how I used machine learning to identify an environmental issue and to improve performance.

https://glennengstrand.info/software/architecture/msa/ml

I also compared various open source projects that offer machine learning.

https://glennengstrand.info/software/architecture/ml/oss

I built a Spring Boot version and compared that to the Dropwizard version.

https://glennengstrand.info/software/performance/springboot/dropwizard

How about an implementation in Go circa 2019?

https://glennengstrand.info/software/architecture/microservice/golang

Exploring an alternative to REST API design, here is an implementation in GraphQL.

https://glennengstrand.info/software/architecture/microservice/graphql

I explored the issues with writing reactive microservices for the JVM in my evaluation of Vert.x and Play.

https://glennengstrand.info/software/architecture/microservice/vertx/play

I revisited Clojure on Vert.x via Donkey circa 2021.

https://glennengstrand.info/software/architecture/microservice/clojure/vertx

I covered front end development with React vs Ionic vs Flutter

https://glennengstrand.info/software/architecture/ionic/react/flutter

There are a lot of different open source projects being used here.

project URI where used
Akka http://akka.io/ used in both client/perf3 and client/perf4
Cascalog http://cascalog.org/ client/perf
Cassandra http://cassandra.apache.org/ server/feed* and kong
Clojure https://clojure.org/ server/feed and client/load
ctree https://www.rdocumentation.org/packages/partykit/versions/1.2-2/topics/ctree client/ml
Docker https://www.docker.com/ server/feed*
Donkey https://github.com/AppsFlyer/donkey server/feed13
DropWizard https://www.dropwizard.io/en/latest/ server/feed3
Druid https://druid.apache.org/ server
Elastic Search https://www.elastic.co/ server/feed* and client/perf*
Finatra http://twitter.github.io/finatra/ server/feed2
Flask http://flask.pocoo.org/ server/feed5
Flutter https://flutter.dev/ client/flutter
Go https://golang.org/ server/proxy and server/feed9
GraphQL https://graphql.org/ server/feed10
Guice https://github.com/google/guice server/feed3
Hadoop http://hadoop.apache.org/ client/NewsFeedPerformance
Helm https://helm.sh/ server/helm
Hyperledger https://www.hyperledger.org/projects/composer server/feed7
Ionic https://ionicframework.com/ client/mobile/feed
Jackson http://wiki.fasterxml.com/JacksonHome server/feed3
JDBI http://jdbi.org/ server/feed3
Jersey https://jersey.java.net/ server/feed3
Jetty http://www.eclipse.org/jetty/ server/feed and server/feed3
Jupyter https://jupyter.org/ client/ml
Kafka https://kafka.apache.org/ server/feed*, client/perf, client/perf2, and client/perf3
Kong https://getkong.org/ client/perf4
Kubernetes https://kubernetes.io server/k8s
Memcached https://memcached.org/ server/feed*
Mondrian http://community.pentaho.com/projects/mondrian/ client/etl
MySql https://www.mysql.com/ server/feed*
Node.js https://nodejs.org/en/ server/feed4 and server/feed7
Play https://www.playframework.com/ server/feed12
PostGreSql https://www.postgresql.org/ server/feed and server/feed2
Prometheus https://prometheus.io/ server/prometheus
Python https://www.python.org/ server/feed5 and server/aws
React https://reactjs.org/ client/react
Redis https://redis.io/ server/feed*
Ring https://github.com/ring server/feed
R Programming Language https://www.r-project.org/ client/ml
Scala https://www.scala-lang.org/ server/feed[2,6,11,12] and client/perf[2,3]
Scalatra http://scalatra.org/ server/feed6
scikit-learn http://scikit-learn.org/stable/ client/ml
Solr http://lucene.apache.org/solr/ server/feed and server/feed2
Spark https://spark.apache.org/ client/perf2
Spark ML https://spark.apache.org/docs/latest/ml-guide.html client/ml
Spring Boot https://spring.io/projects/spring-boot server/feed8
Swagger http://swagger.io/ server/feed3 and server/feed4
TensorFlow https://www.tensorflow.org/ client/ml
Terraform https://www.terraform.io/ server/tf
Tidyverse https://www.tidyverse.org/ client/ml
TypeScript https://www.typescriptlang.org/ server/feed10, client/mobile/feed, client/react
Vert.x http://vertx.io/ client/perf4 and server/feed11
Clone this wiki locally