Posts

Showing posts from 2019

From OpenAPI to source code with CI/CD

Image
Introduction In the era of Microservices, you are probably designing or consuming one or more Web Services. As a result, you might be aware of the importance of having a good definition of your web services, since that is what clients and developers will use to know how a web service can be used. For that reason, you should have a clear and easy way to define and understand your Web API. In order to help you to make a good definition we have REST (Representational state transfer) , which is a software architectural style that defines a set of rules to create Web Services. I'm not going to go into details about RESTful, because there is enough material for a full post and it is out of the scope of this post. But I might write another post about REST, since even nowadays I see some crazy stuff when it comes to Web APIs design. Well, imagine we already have a really awesome definition for the resources of our Web API, and your clients are going to be really excited to use it,

React Rally 2019

Image
If you work with React, you might be interested in watching #ReactRally 2019 conference: - Day 1: https://youtube.com/watch?v=dvtfNpt75aA - Day 2: https://youtube.com/watch?v=8dKljTMDGu0 Here you can find the schedule:  https://www.reactrally.com/schedule Enjoy it!

Git and branching workflows

Image
Introduction When you are working in a software project, one of the most important aspects is your branching strategy. If you are using GIT (and if don't, probably you should consider it), there are several strategies, such as Gitflow, Github flow and Gitlab flow, etc. In this article, I will try to introduce them and analyse pros and cons for each one. Spoiler alert, there are advantages and disadvantages for all of them, so taking that into account, you should consider which one fits better for your project and team. Environments and software life-cycle First of all, in order to understand why we need a particular branching strategy, we need to have clear which is the relationships between versioning, environments and software life-cycle. Normally, in software development, we can find three environments, where we will be deploying our versions for different purposes. These can be more than three, but lets focus on the basic pipeline. I will call those environments

Benefits of using TypeScript in your project

Image
Introduction Since I started my career in Computer Sciences, I have had the chance to work with a huge variety of frontend and backend technologies. During that period, on the client side, I witnessed how the web has evolved, starting static html, then adding javascript, AJAX, later animations with flash, silverlight or applets, html5 and recently new frontend frameworks like Angular, Vue and React.....or the incoming and promising Blazor, of which I will talk in a future post. So Javascript at the beginning was created to add some scripting capabilities to our static websites, which most of the times led to a lot of spaghetti code difficult to maintain. Ajax was also an important turning point, which allowed us to render our page dynamically, instead of having that ugly user experience produced by server-side rendering frameworks, such as MVC, JSP or PHP. And this fact moved the logic for web pages from server to client, producing a great client experience. However webs become c

Madrid DotNet 2019 summary

Image
Thanks to Fenergo, this week I had the chance to attend DotNet 2019 in Madrid and it was a really rewarding experience. For this reason, I would like to post a summary of the day and the key point of the speeches I could attend. First of all, the event started with a keynote by the Scott Hunter . He talked about the innovations incoming to the dotnet world. Some of the key points mentioned were: the introduction of Blazor, ML.net, c# 8.0, .net core 3.0 recent features like performance improvement and the future .NET 5, which will the only one version for .net to support Windows, Linux, macOS, iOS, Android, tvOS, watchOS and WebAssembly, etc. Next, I attended the session "SSR with typescript, React and NextJS" by Carlos Bastos Pérez . In this session, Carlos showed how he does an analysis to choose a technology stack. In the case of NextJS, it allow us to build server side render react applications easily, which can be a really suitable solution when we need to sup

Azure DevOps: Deploy your SPA on AWS S3 bucket

Image
Introduction According to Amazon's definition: Amazon Simple Storage Service (Amazon S3) is an object storage service that offers industry-leading scalability, data availability, security, and performance. These features make AWS S3 a really interesting candidate to store static files. However, since AWS S3 supports http static hosting, single page applications (SPA) can also get benefit from AWS S3.   Additionally, if you want to support https, you can also use AWS CloudFront. You can find more info in this article: https://aws.amazon.com/blogs/networking-and-content-delivery/amazon-s3-amazon-cloudfront-a-match-made-in-the-cloud/  In a project were I'm working, I configured CI/CD to deploy a React application in AWS s3. Due to the poor quality of AWS documentation, even the simplest task can be a challenge, so I will try to explain how to configure Azure DevOps to deploy to AWS S3, as this may be of help to somebody.  Configuring Release Pipeline on Azure DevO

Azure Functions, the future of SaaS

Image
  Introduction Recently, I have had the chance to use Azure Functions as candidate for the design and development of a service, which will be delivered as Software as a Service (SaaS). Azure Functions is a relatively recent technology, and as a consequence, I have realized many people didn't heard of it yet. For this reason, I would like to write this post as a brief introduction and my personal experience using it at the present. What is Azure Functions? Azure Functions provide a framework to build and manage easily serverless oriented architectures. The idea behind Azure Functions  is that you have a piece of code, which provides a functionality. In order to execute your piece of code, Azure functions introduce the concept of " trigger ". A trigger can be an HTTP request, a timer, a message in a queue, a modification on a Blog, etc. In addition, Azure Functions provides the concept of " bindings " Binding to a function is a way of declaratively connect

Migrating legacy projects to .Net Core/Standard

Image
Introduction After the second version of .NET Core, it is pretty likely to be the future for .NET development, at least for many years. Luckily for legacy projects, Microsoft still continues supporting .NET Framework and developing new versions, such as .NET framework 4.8, which currently available as early access https://github.com/Microsoft/dotnet-framework-early-access . Even though, .NET Core provides some benefits that might be considered to port your legacy projects from .NET Framework to .NET Core. According to this article Choosing between .NET Core and .NET Framework for server apps , these are the points that you should consider to choose between .NET Core or .NET Framework: Use .NET Core for your server application when: You have cross-platform needs. You are targeting microservices. You are using Docker containers. You need high-performance and scalable systems. You need side-by-side .NET versions per application. Use .NET Framework for your server applic