-
Notifications
You must be signed in to change notification settings - Fork 13
Home
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 |