github.com/tickoalcantara12/micro/v3@v3.0.0-20221007104245-9d75b9bcbab9/docs/blog/_posts/2016-12-28-micro-past-present-future.md (about) 1 --- 2 layout: post 3 title: Micro - Past, Present and Future 4 date: 2016-12-28 09:00:00 5 --- 6 <br> 7 2016 has been a heck of a year for Micro. In this post we'll recap on the past year and where we're going but to begin with let's talk 8 about Micro's origin. 9 10 ### The origin of Micro 11 12 [Micro](https://github.com/tickoalcantara12/micro) or more specifically [go-micro](https://github.com/micro/go-micro) began as a much needed platform 13 library for an infrastructure based side project back in late 2014. At the time I was working at Hailo where we had built a microservice platform 14 called H2 for our own needs. 15 16 Starting on this new project I knew I wanted to use Go and a microservice architecture, but it became clear 17 very quickly there wasn't anything quite like the Hailo H2 platform out there. So the painstaking work began to recreate it. 18 19 The side project unfortunately never really went anywhere but a few months later I had an early version of go-micro and decided it should 20 at least be open sourced on github. The initial commit to github can be found [here](https://github.com/micro/go-micro/commit/8e55cde513cbec9f3e3aaf0ed7beb637510fc9b2). 21 22 <center> 23 <img style="width: 100%;" src="{{ site.baseurl }}/blog/images/first-commit.png" /> 24 </center> 25 26 Back then go-micro had a fairly simple and straightforward purpose. An RPC framework for microservices. An attempt to address the core 27 requirements of microservices and simplify distributed systems development. 28 29 Having helped build and leverage a microservice platform at Hailo I knew how powerful it could be in software development and this really 30 sparked my own desire to try build something similar as an open source project. 31 32 ### The evolution of Micro 33 34 Go-micro the pluggable RPC framework evolved into [Micro](https://github.com/tickoalcantara12/micro), a microservice toolkit. The toolkit began life 35 as an idea to develop a microservice protocol or a specification, as can be seen from the initial commits. [[1]](https://github.com/tickoalcantara12/micro/commit/6259b301a8f2bc8e143910fd320caf8071426504), [[2]](https://github.com/tickoalcantara12/micro/commit/d0610303bb44561064fb450c19264187d06d82f2), [[3]](https://github.com/tickoalcantara12/micro/commit/6876df2caf028b6dbff7d3a5b672d6a0aa7e6ef2) 36 37 For whatever reason I lost interest in the idea of a protocol and started to rethink what was actually important. Microservices being a 38 architecture pattern, it became clear that the tooling should really guide that architecture and simplify microservices in general. 39 40 So appeared the API Gateway and CLI. The commit can be found [here](https://github.com/tickoalcantara12/micro/commit/b2ef68df31644442ad2de6398caf661328542a4f). 41 42 It all progressed rapidly from there and became something more featureful. 43 44 <center> 45 <img src="{{ site.baseurl }}/blog/images/micro-diag.png" /> 46 <br> 47 </center> 48 49 I'll spare you the details of how things unfolded throughout 2015 but Micro turned into a full fledged toolkit for microservices. The goal, to provide the fundamental requirements for building and managing microservices. 50 51 ### 2016 52 53 Near the end of 2015, Micro got noticed by a few companies and even saw production use before the end of the year. That was pretty awesome! 54 55 I forgot to mention, a few months prior I had actually quit my job at Hailo to pursue working on Micro full time. Knowing I was burning 56 savings as each month went by, I worked tirelessly to address the core requirements and drive initial adoption. 57 58 ###### Sponsorship 59 60 A colleague and friend who helped build the platform at Hailo took notice. He had also moved on and was pursuing the rather 61 ambitious goal of transforming a century old enterprise into a modern technology driven company. 62 63 As he began to lay the groundwork for his own project he was also struck by the same issue, a lack of Go based open source tooling for microservices like 64 what we had built at Hailo. 65 66 This started the discussion about where Micro was headed and how we could work together to create a sustainable future for the project 67 which included allowing me the opportunity to work on it full time. 68 69 <center> 70 <a href="{{ site.baseurl }}/2016/04/25/announcing-sixt-sponsorship.html"> 71 <img style="width: 50%;" src="{{ site.baseurl }}/blog/images/micro_sixt.png" /> 72 </a> 73 <br> 74 </center> 75 76 In early 2016, [Sixt](https://en.wikipedia.org/wiki/Sixt) the German car rental enterprise agreed to sponsor the open source development of Micro. Read the announcement [here]({{ site.baseurl }}/2016/04/25/announcing-sixt-sponsorship.html). 77 78 79 [Boyan Dimitrov](https://twitter.com/nathariel), platform director at Sixt and the friend I mentioned, was really the driving force behind the 80 sponsorship and it's early adoption in the enterprise. 81 82 Sustainable open source development is difficult without sponsorship or other forms of funding. The relationship with Sixt has really been fundamental 83 in the development, adoption and success of Micro. 84 85 ###### The Blog 86 87 In the world of software, there's a commonly uttered passive aggressive phrase known as, "read the code". Author's of projects intimately knowing 88 their code sometimes believe others should just as easily understand it. 89 90 Code on its own though is rarely enough. 91 92 Not only knowing this but also having the desire to raise awareness for Micro and touch on higher level ideas I decided it would be important to start a blog. 93 94 <center> 95 <blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">The follow up blog post detailing Micro - a microservice toolkit. <a href="https://t.co/TEt8MSgBtL">https://t.co/TEt8MSgBtL</a> <a href="https://twitter.com/hashtag/microservices?src=hash">#microservices</a> <a href="https://twitter.com/hashtag/golang?src=hash">#golang</a></p>— Micro (@MicroHQ) <a href="https://twitter.com/MicroHQ/status/711886548527157249">March 21, 2016</a></blockquote> 96 <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> 97 <br> 98 </center> 99 100 The micro blog has served as a place to explore the toolkit and microservices in depth while also delving into other aspects such as the requirements for company adoption and it's impact. Much more could be written about the non-technical requirements of microservices in organisations. 101 102 <center> 103 <blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">Micro architecture & design patterns for microservices <a href="https://t.co/cqV226ndZi">https://t.co/cqV226ndZi</a> <a href="https://twitter.com/hashtag/microservices?src=hash">#microservices</a> <a href="https://twitter.com/hashtag/golang?src=hash">#golang</a></p>— Micro (@MicroHQ) <a href="https://twitter.com/MicroHQ/status/722004109495267328">April 18, 2016</a></blockquote> 104 <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> 105 106 <blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">My post on why companies adopt microservices is getting decent reads on Medium. Think I need to move the blog there. <a href="https://t.co/eP2QqrYHhY">https://t.co/eP2QqrYHhY</a></p>— Asim Aslam (@chuhnk) <a href="https://twitter.com/chuhnk/status/750738451931226112">July 6, 2016</a></blockquote> 107 <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> 108 </center> 109 110 The blog has largely been a success, a great way to clarify my own thinking on technical topics and the feedback mostly positive. One of the future 111 goals will be to introduce guest writers or topics of interest beyond microservices. 112 113 I also started a publication on [Medium](https://m3o.com/blog) which has helped increase readership. 114 115 116 ###### Plugins 117 118 Go-micro being self-coined a pluggable framework was all good and well but it's not all that valuable without the plugins. It took me a while to realise this. 119 120 Go-micro started out with [consul](https://www.consul.io/) for service discovery and point-to-point http for messaging. Over time new plugins 121 were introduced and even a few contributed by the community. 122 123 Today there's ample choice with most having been battle tested in production settings. This allows anyone to confidently architect the stack they 124 want with minimal code changes. 125 126 Here are the service discovery plugins so far: 127 <center> 128 <img style="width: 100%;" src="{{ site.baseurl }}/blog/images/registry_plugins.png" /> 129 <br> 130 </center> 131 132 And the message broker plugins: 133 <center> 134 <img style="width: 100%;" src="{{ site.baseurl }}/blog/images/broker_plugins.png" /> 135 <br> 136 </center> 137 138 Every aspect of go-micro is pluggable and the Micro toolkit also boasts pluggability too. Find all the plugins at [github.com/micro/go-plugins](https://github.com/micro/go-plugins). 139 140 ###### Golang UK Conf 141 142 In August, I had the awesome opportunity to speak at the [Golang UK Conf](http://golanguk.com/) about 143 [Simplifying Microservices with Micro](https://www.youtube.com/watch?v=xspaDovwk34). It was the first time I had personally spoken 144 at a conference and only my third ever speaking engagement. 145 146 The talk was an opportunity to raise awareness of the Micro toolkit, explain it's purpose at a high level and dig into the tooling itself 147 in a bit of detail. 148 149 <center> 150 <a href="https://www.youtube.com/watch?v=xspaDovwk34"> 151 <img style="width: 70%;" src="{{ site.baseurl }}/blog/images/talk.png" /> 152 </a> 153 <br> 154 </center> 155 156 It's safe to say I was pretty nervous but it was good validation for all the hard work that had gone into Micro and a few people approached 157 afterwards with positive comments and questions which I'm grateful for. 158 159 ###### Community 160 161 A huge aspect of Micro which must be discussed is the community. The Micro community exists on Slack and is now over 500 members strong. 162 163 Open source is driven by developers and without their blessing projects rarely thrive. As I mentioned before, code on it's own is never 164 enough. Building an online community around an open source project is what helps drive growth and adoption. It's also the place 165 where the most learnings occur and are transferred amongst users of the project. 166 167 The Micro Slack has become a place where companies or individual developers discuss their problems, requirements, etc and can receive immediate 168 feedback. 169 170 I want to thank the members of the community for believing in the project and taking the time to contribute back. 171 172 Join us at [slack.m3o.com](http://slack.m3o.com/) 173 174 With 2016 in the books, let's look to the future. 175 176 ### 2017 177 178 Micro/go-micro have stabilised over the past year and have been proven out in a production setting. They serve a specific function at 179 the core of the overall vision for Micro. The foundational requirements for building microservices. 180 181 While the toolkit and framework will continue to evolve, we want to stick with the unix and microservices philosophies by keeping things 182 simple and logically separate out any further features to separate tools. 183 184 ###### Micro OS 185 186 At a certain scale distributed systems pose a challenge to manage and make sense of. Existing tools built for fewer applications or a different 187 era of software development prove to be less relevant in this new world of microservices. 188 189 A single request may fan out to dozens if not hundreds of microservices, in the case of failure it can be difficult to track down where an issue 190 occurred. Multiple copies of each service may be running globally with rescheduling occuring at any time making old host based monitoring 191 tough. And with data being distributed to support the scale, transactions are likely not supported by the database but we still need some 192 form of coordination. 193 194 There are a number of tools emerging to solve many of these problems but nothing offered as a cohesive whole. 195 [Micro OS](https://github.com/micro/os) is a microservice operating system which attempts to address all these requirements. 196 197 <center> 198 <img src="{{ site.baseurl }}/blog/images/os-diag.png" /> 199 <br> 200 </center> 201 202 Micro OS is currently a work in progress but based on previously well executed models for providing an entire platform runtime for 203 microservices. It will include service discovery, global load balacing, distributed tracing, dynamic configuration, distributed coordination 204 and much more. 205 206 ###### Micro Edge 207 208 My personal interests in computer networks and distributed systems spans over a decade, going back to my studies at university. There I 209 learned about the internet architecture itself and became fascinated with large scale systems. 210 211 <center> 212 <blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">My technology interest over time:<br>2002-2006 internet<br>2007-2011 c10k<br>2011-2013 google<br>2013-2016 microservices<br>2016-201x edge compute</p>— Asim Aslam (@chuhnk) <a href="https://twitter.com/chuhnk/status/808669470109683712">December 13, 2016</a></blockquote> 213 <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> 214 </center> 215 216 Over time as I saw the evolution of those large scale systems and how most problems had been solved by the likes Google, 217 I became drawn to new problems pushing beyond the datacenter and driving us to even greater scaling requirements. 218 219 In the future we'll find intelligent systems almost everywhere with the need to process large amounts of data and act offline or at a rate 220 which is faster than what's possible if we sent requests back to a centralised cloud provider. 221 222 Edge computing looks to solve this problem by pushing applications, data processing and services closer to the logical extremes of a network. It is not 223 a new concept but something which is becoming more relevant as our needs evolve. 224 225 In the second half of 2017 I will begin work on Micro Edge, a set of tools to simplify development of edge computing services. Reach out to learn more. 226 227 ### Highlights 228 229 It's been a heck of a ride so far with a lot more to come in 2017. Stay tuned! And with that said, I'll leave you with a few of the greatest hits from the 2016. 230 231 Happy new year! 232 233 - [Micro - a microservice toolkit](https://m3o.com/blog/micro-a-microservices-toolkit-c403145b65c1) 234 - [Micro on NATS - microservices with messaging](https://m3o.com/blog/micro-on-nats-microservices-with-messaging-2dcc248fb5b9) 235 - [Micro architecture & design patterns for microservices](https://m3o.com/blog/micro-architecture-design-patterns-for-microservices-37f4b9049ad3) 236 - [Building Resilient and Fault Tolerant Applications with Micro](https://m3o.com/blog/building-resilient-and-fault-tolerant-applications-with-micro-53b454a8e8eb) 237 - [Why Companies Adopt Microservices and How They Succeed](https://medium.com/@asimaslam/why-companies-adopt-microservices-and-how-they-succeed-2ad32f39c65a) 238 - [Simplifying Microservices with Micro](https://www.youtube.com/watch?v=xspaDovwk34) [Video] [Golang UK Conf 2016] 239 240 If you want to learn more about the services we offer or microservices, checkout the website [micro.mu](https://m3o.com) or 241 the github [repo](https://github.com/tickoalcantara12/micro). 242 243 Follow us on Twitter at [@MicroHQ](https://twitter.com/m3ocloud) or join the [Slack](https://slack.m3o.com) 244 community [here](http://slack.m3o.com). 245 246