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