Tuesday, December 4, 2018

Steps into Microsoft Universe

In recent months I did more and more integrations with different Microsoft platforms, being it good old AD, but also its Azure sibling and Exchange or Office 365. I had to learn a lot long the way and  last week I had opportunity to attend The European SharePoint, Office 365 & Azure Conference to get better overview of the ecosystem and future directions.



Having almost 2 decades of experience with IBM collaboration tools, quite often fighting against solutions from Microsoft, this step was both sad and exciting. Sad in terms that when I started with IBM Domino, it probably had bigger market share in messaging than Microsoft and whole ecosystem was better at that time. Since then, many things changed and now Microsoft is not even mentioning IBM as competition at all. I'm not saying that there is no future for IBM collaboration tools, but market has moved on since last big updates were done to those platforms and I've never seen any big vendor to be good at caching up with the market. HCL may bring new life to Domino, but it'll be definitely different life than one that was based on messaging and integrated collaboration tools. It'll have to be more open to external world.

When I went to the conference I was worried that everything will be different, but at the end I haven't found many differences between Notes/Domino or in general IBM collaboration events and this one. Terminology is similar, emphasis on collaboration and community is also same, so at the end just the name of the vendor was different. Even many tools look the same. I still have hard time to distinguish between Slack, Teams and Watson Workspace at first sight.

I think I had quite good general knowledge of the ecosystem and I hoped to clarify several areas bit more before I jump in and finally implement something with all these tools. After the conference I primarily learned that there is really no best way to implement things and it all depends on requirements of your solution, so you have to choose wisely and learn along the way.

Cloud

All vendors have been pushing customers towards cloud in many years. I think they have now realized that companies that wanted to use cloud technologies in cloud by now and they have to focus more on those who don't want to have everything in cloud or simply can't. Microsoft is building new data centers around the world to bring its cloud closer to the customers (and data withing their countries which helps to solve several legal issues), but this is usually not enough. Many sessions talked about hybrid architectures and options to connect to on premises systems and data.

Creating link between cloud and on premises servers introduces new sets of problem, mostly caused by connectivity and latency. Of course there is solution for that - just get an Express route.

If you don't want to have data in Microsoft Cloud but still want to use cloud technologies, you can even buy Azure Stack appliance. I remember laughing many years ago when IBM announced Bluemix Local, or how was it called.

You still have to remember that there is no real cloud (only those in the sky). This is just someone else's computer. Having more data centers means also different capabilities as it's not possible to deliver all services to all of those at same time. Core services should be available everywhere, but if you start to use some special services, you may need to check first.

Designing solution for this ecosystem is not easy. There are many moving parts and now those parts can also run around the globe, which is great but also brings new challenges. One of them is pricing, because all these tools and services come with a price tag that can change based on sheer amount of parameters.

You can always just run a VM in Azure, but this is almost same like putting box to a hosting provider in 90s. Still valid for some scenarios, but vendors try to encourage you to build cloud-native apps, because once you tightly integrate with their services, it's hard to leave. It was hard to leave Windows platform in past and it will be similar if you build solution on Azure with Azure Functions or other server-less services. I'm not saying that it's bad as building solutions for Windows systems worked well and still works for many companies. If you don't want to take the risk you can just package everything as VMs or put it into containers.

Office 365

Office is not about spreadsheet and text editor anymore. Currently re-branded as Microsoft 365 it should provide a platform for productivity. Yes, as always there is risk of big brother having all your data or vendor lock-in, but it's this what made Apple so popular. Seamless integration of all devices on many levels. Apple was doing this from very beginning and it was one of biggest advantages compared to Microsoft. I think just people who use Microsoft platforms for 20-30 are used to old way of installing a boxe software and then have everything guaranteed until their machine died. This model is gone now and we get continuous updates of apps on our phones, so why not main machines.

Office 365 itself is built from many products and Microsoft is trying to consolidate the architecture and also technologies used to extend it. Teams being probable the newest kid on the block, it's used as example how tools can use other services. It fully integrates with Sharepoint Online for content sharing, allowing also OneNote integration. I like the flexibility, but it'll require some guidelines for users to not get lost. Having too many options and too complicated solutions was always one of biggest problems of Microsoft compared to Apple, so let's see if they can get also this right.

Currently one of new additions to Office 365 platform are Adaptive Cards. IBM tried to do same with Embedded Experience many years ago, so it's again familiar topic. In this case you can create actionable message that users can directly integrate with in Outlook, Teams and even Microsoft Windows tasks list. Do action right in context of message without need for switching. I liked the idea when IBM came with it and I still like it.

Graph

Microsoft Graph should be the single point of integration for all third-party tools that interact with Microsoft 365. It's now three years old and while it's still getting new and new features, there are many challenges. If you just keep adding stuff to something, it'll turn into a monster sooner or later. Microsoft needs to decide how to proceed with this as having just one official v1.0 version is not going to work for ever. 

From feature perspective Graph rarely provides all apis that we need, so we have to switch back to PowerShell for more complex operations. I still see Graph more like content manipulation api that full management api, similar to EWS. Microsoft is also slowly deprecating EWS and moving all available APIs to Graph, so I think this will be next big thing on Graph once it's available.

There are many SDKs and libraries to integrate with Microsoft Graph, but I highly recommend to try at least few requests directly to see the options. SDKs are quite often generated from the API definition xml, but still can miss some well hidden options.

Azure

I've already talked about cloud in general. If you start to work with Azure it's scary. If you open the portal there are many buttons and sections that you have no idea what they do, even worse clicking on anything can probably cost you money. 

I think it's similar as if you walk into a data-center for first time. With all those machines, wires, boxes, etc. around you, it's scary. And actually this is exactly what Azure portal gives you, access to whole data center in web ui. Nobody understands everything about every piece in data center, so just pick one box/topic and start learning. 

Azure is a platform or ecosystem, which is continually being developed. This means you can never know everything and there is no version tag on whole Azure, just on individual components. If you start to work with cloud, you buy yourself a ticket for continuous learning.

Technologies

This was first Microsoft event for me, but I was happy to see that most of the information that was new to me was presented in way that it was new to everyone. Primary focus of the conference was Sharepoint, so many people in the audience also just did first steps toward cloud and new technologies and patterns. Average age of attendees was probably close to my age, so it was different than when you go to Google or general modern dev event, where everyone looks like just getting his drivers license. We are all in enterprise collaboration business for some time and have great experience, we just have to make sure it works with new tool.

Quite often there is old way to do things, new way to do things and sometimes several other alternatives. There is no right way to do things, you have to choose wisely. Many products, sdks and tools have one version that's being deprecated and another version that's in preview (and doesn't support all features). We have seen similar situation with other vendors too, for example Salesforce has classic UI and new Lightning UI, both having cons and pros. This is result of more agile way of developing the solutions. Deliver quickly, make it available to users, gather feedback and get ready for next iteration. There are no boxed products anymore, just solutions. This works well for SaaS, but other types of solutions have to adapt too.

Here are some pick for technologies that make sense to learn more in Microsoft world

JavaScript

OK, it's a general must nowadays. If you want to do anything UI related, or some Node.JS server work, you have to use it. Even Office 365 productivity tools are now written in JavaScript to be able to work in both web and desktop UI.
TypeScript is well supported by Microsoft, so you may give it a try.

PowerShell

PowerShell will still be the tool for automated management of many Microsoft products. There are several non-PowerShell tools for several areas, but still if you need to do anything more complex, you have to do it with PowerShell. 

Newest PowerShell is running on top of .NET Core, so it's more portable but sometimes not compatible with cmdlets from original PowerShell.

C#

.NET Core and ASP.NET Core try to make C# development more fun again. Microsoft had to re-design .NET Framework to make it interesting to developers in comparison to Node.js, SpringBoot and other technologies that make it easy to develop portable apps, that also work well in containerized environments. My knowledge of C# is limited, so I can't really compare them, but sentiment of blog posts is positive, so just give it a try.

Running C# directly in Azure Function seems to be good and easy example of integration of C# code into cloud architecture. Something I have to try soon. 

Graph

REST APIs are everywhere, so if you figured out OAuth dance, you are ready to use Microsoft Graph.

Azure

Yes, the cloud thing. Just learn the basics first, so you are not scared to click some buttons in Azure portal UI. Get a dev tenant and start experimenting. There is no better way to learn this then building something. Books can give you good start, but probable they are old already when released.

Azure DevOps

Every platform needs some kind of automation, so this is topic that I want to explore to try native Azure pipelines and other tools, not just use Azure as deployment target.

Bots

AI and bots are everywhere. Similar to Adaptive cards mentioned earlier bots are way to provide new way to interact with software. In Microsoft world bots can even work together with adaptive cards.

Microsoft has own Luis.ai bot framework, but it seems to be similar to what other vendors are doing (for the basic stuff).

Learn

Coming from IBM Domino space where all documentation is probably from 2010, resources in Microsoft world are overwhelming. To mention few:

Microsoft Connect event (4th Dectoday as of writing) - https://www.microsoft.com/en-us/connectevent/ 



and of course general sites like https://dev.microsoft.com or https://itpro.microsoft.com . I still don't understand difference between developer and it professional. Probably there are no professional developers for Microsoft platforms, just hobbyists. It that case I'd stick to IT pro to pay my bills.

Conference and Venue

Everything was well organized and the venue was perfect fit for size of the conference. If I remember correctly there were around 1800 people and I haven't noticed any sessions to be too crowded or completely empty. Catering was great and there was enough good coffee for everyone.

In general I really liked Copenhagen. I even had some time for sightseeing on Monday, when the weather was perfect, and I definitely have to come back to see more.

Conclusion

Overall it was nice event and I've learned a lot. It wasn't that much about content, but about the vision and I have to admit I like what Microsoft presented. I even consider joining Insider programs and start to use more features of Windows 10. 

Real world is not so shiny as conference presentations, but as many sessions were given non-Microsoft people, they all admitted that nothing is perfect and you have to be ready for troubleshooting and continuous learning. 

Next year

Will I attend next year? I don't know. It'll depend on how much deep I get into this Microsoft ecosystem and how valuable the content will be for me. If I go it'll be more about connecting with the community, not just checking out how it looks.

Next conference will be in Prague, so no sightseeing for me, unless I take a role of a tour guide. 


No comments:

Post a Comment