Make Work Better by Documentation

Sharing knowledge in a team is an ongoing challenge. Finding balance between writing documentation and keeping it up to date, and handling daily operations and discussing matters face to face or via chat is not an easy task. I’ve found written documentation to be well worth the time it takes. Here’s two examples of how documentation has helped to make our work better.

Make uncertainties visible

Documenting software requirements has a profession of its own. But one doesn’t need to be an expert in requirements engineering to be able to enhance customer communication and ease the development with documentation.

Problem

I had a customer at work who wanted to integrate a 3rd party service. The service was under development at the same time that we started discussing integrating it. The service would replace old processes in the customer’s existing service. There were lots of questions about how the new service would function, and what exactly it would mean to replace existing functionality with it.

Solution

I sat down with one of my colleagues who knew the customer software. With pen and paper, we drew several sequence diagrams to represent current processes. Then we created sequence diagrams to propose how the new service would be integrated. We drew big question marks where we were unsure of the current process or how the new service would function. We even included questions for manual processes in the customer end to better understand what information the new service should provide.

Then I transformed the pictures from paper to digital form and included the diagrams to a wiki page. I gathered all questions to a table in the same wiki page. Next time we discussed with the customer, we went through the wiki page, answered all the questions and wrote a bunch more. The wiki page served well during the requirements gathering phase. It was liked by both the developers and the customer.

Take-aways

  • Sequence diagrams are a lovely way to present processes.
  • Table of questions, with an empty column for an answer, invites discussion.
  • Wiki page with diagrams and question-answer tables serves well as documentation.

Bring clarity with meaningful ways

Managing development tasks, bug tickets and service requests can become a full-time job. When a team has several customers, and each customer has a lot going on, kanban boards can end up in a cluttered condition. More time is spent figuring out what to do instead of doing it.

Problem

We used a kanban board for service requests, bug tickets and sharing information with a customer. Their system was in beta test phase, and lots of questions and enhancement ideas were coming up. It was difficult for the team to keep up with the latest priorities. There was a weekly meeting with the customer, but information was poorly shared for those of the team who did not attend the meeting.

Solution

To have a common starting point, I listed all ongoing tickets and described their status in the very first agenda of weekly meetings. In the meeting, we agreed on a priority order for the tickets, and I wrote that down to the agenda, which became the meeting minutes on the fly.

For the next weekly meeting, again I gathered information for all ongoing tasks. It wasn’t a fast thing to do, because there were so many sources of information for the work we were doing for the customer. But it was worth it. Weekly meetings became easier to lead, when we had a ready-made skeleton to follow, instead of tumbling around the kanban board. Also, having written documentation ensured that the whole team was informed about work ongoing and priorities for the next week.

Take-aways

  • Prepare for meetings with an agenda. Share it beforehand with everyone involved and store it in a place available for both the team and the customer.
  • Write meeting minutes. An easy way is to transform the agenda to the minutes by updating the document during the meeting.
  • Make sure the team knows there is documentation in the form of agenda/minutes.

Document when necessary

As we’ve seen, written documentation can help a lot when planning a new service or handling quickly changing requirements. Documenting must be allocated a time of its own. It might be difficult to take the time for writing documents, if it is not a common practice within your team.

Personal skills have a role to play, as well. Finding important information in the clutter of communication and getting it to a written form might not be easy for everyone. Leverage the various skills of your team and find the best ways of documenting your important matters.

Blog

Starter for 10: Meet Jonna Iljin, Nordcloud’s Head of Design

When people start working with Nordcloud, they generally comment on 2 things. First, how friendly and knowledgeable everyone is. Second,...

Blog

Building better SaaS products with UX Writing (Part 3)

UX writers are not omniscient, and it’s best for them to resist the temptation to work in isolation, just as...

Blog

Building better SaaS products with UX Writing (Part 2)

The main purpose of UX writing is to ensure that the people who use any software have a positive experience.

Get in Touch

Let’s discuss how we can help with your cloud journey. Our experts are standing by to talk about your migration, modernisation, development and skills challenges.








    Istio webinar by Nordcloud

    CATEGORIES

    Blog

    What is Istio?

    Istio is an open platform-independent service mesh that provides traffic management, policy enforcement, and telemetry collection.

    Istio addresses the challenges developers and operators face on the transition from monolithic architecture to a distributed microservice architecture. To learn how, it helps to take a more detailed look at Istio’s service mesh.

     

    Join the Istio webinar by Nordcloud!

    The webinar will be hosted (in polish language) by one of our Cloud Architects – Piotr Kieszczyński.

    Date:

    31.01.2019 18.00 CET

    Agenda:

    What is Istio?
    – Why it is important?
    – Quick Demo
    – Q&A

    Webinar Connection Info:

    Join Zoom Meeting
    https://zoom.us/j/723434349

    One tap mobile
    +48223987356,,723434349# Poland
    +48223073488,,723434349# Poland

    Dial by your location
    +48 22 398 7356 Poland
    +48 22 307 3488 Poland
    Meeting ID: 723 434 349
    Find your local number: https://zoom.us/u/d0Aplx7D8

    Join by Skype for Business
    https://zoom.us/skype/723434349

    Add to calendar: https://zoom.us/meeting/723434349/calendar/google/add

    Blog

    Starter for 10: Meet Jonna Iljin, Nordcloud’s Head of Design

    When people start working with Nordcloud, they generally comment on 2 things. First, how friendly and knowledgeable everyone is. Second,...

    Blog

    Building better SaaS products with UX Writing (Part 3)

    UX writers are not omniscient, and it’s best for them to resist the temptation to work in isolation, just as...

    Blog

    Building better SaaS products with UX Writing (Part 2)

    The main purpose of UX writing is to ensure that the people who use any software have a positive experience.

    Get in Touch

    Let’s discuss how we can help with your cloud journey. Our experts are standing by to talk about your migration, modernisation, development and skills challenges.








      Four compelling reasons to use Azure Kubernetes Service (AKS)

      CATEGORIES

      BlogTech Community

      Management overhead, inflexibility and lack of automation all stifle application development. Containers help by moving applications and their dependencies between environments, and Kubernetes orchestrates containerisation effectively.

      But there’s another piece to the puzzle.

      Azure Kubernetes Service (AKS) is the best way to simplify and streamline Kubernetes so you can scale your app development with real confidence and agility.

      Read on to discover more key benefits and why AKS is the advanced technology tool you need to supercharge your IT department, drive business growth and give your company a competitive edge over its rivals.

      Why worry about the complexity of container orchestration, when you can use AKS?

      1. Accelerated app development

      75 percent of developer’s time is typically spent on bug-fixing. AKS removes much of the time-sink (and headache) of debugging by handling the following aspects of your development infrastructure:

      • Auto upgrades
      • Patching
      • Self-healing

      Through AKS, container orchestration is simplified, saving you time and enabling your developers to remain more productive. It’s a way to breathe life into your application development by combatting one of developer’s biggest time-sinks.

      2. Supports agile project management

      As this PWC report shows, agile projects yield strong results and are typically 28 percent more successful than traditional projects.

      This is another key benefit to AKS – it supports agile development programs, such as continuous integration (CI), continuous delivery/continuous deployment (CD) and dev-ops. This is done through integration with Azure DevOps, ACR, Azure Active Directory and Monitoring. An example of this is a developer who puts a container into a repository, moves the builds into Azure Container Registry (ACR), and then uses AKS to launch the workload.

      3. Security and compliance done right

      Cyber security must be a priority for all businesses moving forward. Last year, almost half of UK businesses suffered a cyber-attack and, according to IBM’s study, 60 percent of data breaches were caused by insiders. The threat is large, and it often comes from within.

      AKS protects your business by enabling administrators to tailor access to Azure Active Directory (AD) and identity and group identities. When people only have the access they need, the threat from internal teams is greatly reduced.

      You can also rest assured that AKS is totally compliant. AKS meets the regulatory requirements of System and Organisation Controls (SOC), as well as being compliant with ISO, HIPAA and HITRUST.

      4. Use only the resources you need

      AKS is a fully flexible system that adapts to use only the resources you need. Additional processing power is supported via graphic processing units (GPUs) – processor intensive operations, such as scientific computations, enables on-top processing power. If you need more resources, it’s as simple as clicking a button and letting the elasticity of Azure container instances do the rest.

      When you only use the resources you need, your software (and your business) enjoys the following benefits:

      • Reduced cost – no extra GPUs need to be bought and integrated onsite.
      • Faster start-up speed compared to onsite hardware and software which takes time to set-up.
      • Easier scaling – get more done now without worrying about how to manage resources.

      Scale at speed with AKS

      The world of applications moves fast. For example, 6140 Android apps were released in the first quarter of 2018 alone. Ambitious companies can’t afford the risk of slowing down. Free up time and simplify the application of containerisation by implementing AKS and take your software development to the next level.

      To find out how we get things done, check out Nordcloud’s approach to DevOps and agile application delivery.

      Feel free to contact us if you need help in planning or executing your container workload.

      Blog

      Starter for 10: Meet Jonna Iljin, Nordcloud’s Head of Design

      When people start working with Nordcloud, they generally comment on 2 things. First, how friendly and knowledgeable everyone is. Second,...

      Blog

      Building better SaaS products with UX Writing (Part 3)

      UX writers are not omniscient, and it’s best for them to resist the temptation to work in isolation, just as...

      Blog

      Building better SaaS products with UX Writing (Part 2)

      The main purpose of UX writing is to ensure that the people who use any software have a positive experience.

      Get in Touch

      Let’s discuss how we can help with your cloud journey. Our experts are standing by to talk about your migration, modernisation, development and skills challenges.








        How containerized applications boost business growth

        CATEGORIES

        BlogTech Community

        When it comes to applications and other software, businesses need to balance innovation, security and user experience against the cost of development.

        However, too many are stuck with legacy software that isn’t suitable for their needs and legacy development processes that increase the cost of building software without increasing its value.

        This is why more and more companies are embracing containerised applications to improve development productivity, time to market and innovation without sacrificing security or reliability.

        In this blog, we will not only explain what containers are, but show you how they can benefit your business.

        What are containers?

        Containers, in this context, are just another way to build and deploy applications. Instead of building monolithic applications that run in their entirety on servers, containerised applications are made up of Lego-like building blocks called containers. Each container is a standalone package of software that embodies an element of the overall application.

        Containerised applications take advantage of the scalability of cloud infrastructure, coping with peaks and troughs in demand. They also move quickly and reliably from one computing environment to another, for example moving from a development environment to a full-scale production environment.

        How containerized applications benefit your business?

        Software is not simple. To work properly, it relies on everything doing its job at the right time. With multiple applications running on the same operating system, you may find that some don’t mesh together well. Containerisation reduces this risk by letting you build, test, update and integrate individual containers separately. In this way containerisation supports a DevOps approach to development.

        In the past, this was done through virtual machines. But they take up a lot of storage, aren’t so portable and are difficult to update. What’s more they don’t provide the same level of continuous integration and delivery of service that containers do.

        Here are three other ways that containerisation can benefit your business:

        1. Agility

        Containers make it easier to manage application operations and updates. For the best results, you need to work with a specialist IT partner to provide automated container orchestration. This means you can reap the benefits of your containerised applications quickly and effectively. While containerisation can sound complicated, with the right help, it can revolutionise the way you think about IT.

        2. Scalability

        You can meet growing demand and business need by scaling all or parts of your containerised applications almost instantly. You can do this by using software solutions like Openshift on Azure. Openshift on Azure is a free managed container orchestration service, hosted on Azure. It allows you to scale your application infrastructure efficiently.

        3. Portability

        One of the greatest benefits of containerisation is portability. You can reduce or avoid integration issues that slow your day-to-day business activities in a traditional computer environment. You can even stay productive if you move your application onto another device, cloud platform or operating system.

        Make your business more productive and scalable with Openshift on Azure

        With Openshift on Azure, you can manage and scale your containerised applications easily. This free, secure app allows you to boost your DevOps ambitions by accelerating containerised application development. So, if you want to develop and scale your IT infrastructure with confidence, look no further than Openshift on Azure.

        Feel free to contact us if you need help in planning or executing your container workload.

        Blog

        Starter for 10: Meet Jonna Iljin, Nordcloud’s Head of Design

        When people start working with Nordcloud, they generally comment on 2 things. First, how friendly and knowledgeable everyone is. Second,...

        Blog

        Building better SaaS products with UX Writing (Part 3)

        UX writers are not omniscient, and it’s best for them to resist the temptation to work in isolation, just as...

        Blog

        Building better SaaS products with UX Writing (Part 2)

        The main purpose of UX writing is to ensure that the people who use any software have a positive experience.

        Get in Touch

        Let’s discuss how we can help with your cloud journey. Our experts are standing by to talk about your migration, modernisation, development and skills challenges.








          Cloud computing news #10: Serverless, next-level cloud tech

          CATEGORIES

          Blog

          This week we focus on serverless computing which continues to grow and enables agility, speed of innovation and lower cost to organizations.

          Serverless Computing Spurs Business Innovation

          According to Digitalist Magazine, serverless computing is outpacing conventional patterns of emerging technology adoption. Organizations across the globe see technology-driven innovation as essential to compete. Serverless computing promises to enable faster innovation at a lower cost and simplify the creation of responsive business processes.

          But what does “serverless computing” mean and how can companies benefit from it?

          1. Innovate faster and at a lower cost: Serverless cloud computing execution model in which the cloud provider acts as the server, dynamically managing the allocation of machine resources. This means that developers are able to focus on coding instead of managing deployment and runtime environments. Also, pricing is based on the actual amount of resources consumed by an application. Thus, with serverless computing, an organization can innovate faster and at a lower cost. Serverless computing eliminates the risk and cost of overprovisioning, as it can scale resources dynamically with no up-front capacity planning required.
          2. Enable responsive business processes: Serverless function services – function as a service (FaaS) – can automatically activate and run application logic that carry out simple tasks in response to specific events. If the task enchained by an incoming event involves data management, developers can leverage serverless backends as a service (BaaS) for data caching, persistence, and analytics services via standard APIs. With this event-driven application infrastructure in place, one organization can decide at any moment to execute a new task in response to a given event.

          Organizations also need the flexibility to develop and deploy their innovations where it makes the most sense for their business. Platforms that rely on open standards, deploy on all the major hyperscale public clouds, and offer portability between the hyperscaler IaaS foundations are really the ideal choice for serverless environments.

          Read more in Digitalist Magazine

          Nordcloud tech blog: Developing serverless cloud components

          cloud component contains both your code and the necessary platform configuration to run it. The concept is similar to Docker containers, but here it is applied to serverless applications. Instead of wrapping an entire server in a container, a cloud component tells the cloud platform what services it depends on.

          A typical cloud component might include a REST API, a database table and the code needed to implement the related business logic. When you deploy the component, the necessary database services and API services are automatically provisioned in the cloud.

          Developers can assemble cloud applications from cloud components. This resembles the way they would compose traditional applications from software modules. The benefit is less repeated work to implement the same features in every project over and over again.

          Check out our tech blog that takes a look at some new technologies for developing cloud components

          Nordcloud Case study: Developing on AWS services using a serverless architecture for Kemppi 

          Nordcloud helped Kemppi build the initial architecture based on AWS IoT Core, API Gateway, Lambda and other AWS services. We also designed and developed the initial Angular.js based user interface for the solution.

          Developing on AWS services using a serverless architecture enabled Kemppi to develop the solution in half the time and cost compared to traditional, infrastucture based architectures. The serverless expertise of Nordcloud was key to enable a seamless rampup of development capabilities in the Kemppi development teams.

          Read more on our case study here

          Serverless at Nordcloud

          Nordcloud has a long track record with serverless, being among the first companies to adopt services such as AWS Lambda and API gateway for production projects already in 2015. Since then, Nordcloud has executed over 20 customer projects using serverless technologies for several use case such as web applications, IoT solutions, data platforms and cloud infrastructure monitoring or automation.

          Nordcloud is an AWS Lambda, API Gateway and DynamoDB parter, a Serverless framework partner and contributor to the serverless community via contribution to open source projects, events and initiatives such as the Serverless Finland meetup.

          How can we help you take your business to the next level with serverless?

          Blog

          Starter for 10: Meet Jonna Iljin, Nordcloud’s Head of Design

          When people start working with Nordcloud, they generally comment on 2 things. First, how friendly and knowledgeable everyone is. Second,...

          Blog

          Building better SaaS products with UX Writing (Part 3)

          UX writers are not omniscient, and it’s best for them to resist the temptation to work in isolation, just as...

          Blog

          Building better SaaS products with UX Writing (Part 2)

          The main purpose of UX writing is to ensure that the people who use any software have a positive experience.

          Get in Touch

          Let’s discuss how we can help with your cloud journey. Our experts are standing by to talk about your migration, modernisation, development and skills challenges.








            Developing Serverless Cloud Components

            CATEGORIES

            Blog

            A cloud component contains both your code and the necessary platform configuration to run it. The concept is similar to Docker containers, but here it is applied to serverless applications. Instead of wrapping an entire server in a container, a cloud component tells the cloud platform what services it depends on.

            A typical cloud component might include a REST API, a database table and the code needed to implement the related business logic. When you deploy the component, the necessary database services and API services are automatically provisioned in the cloud.

            Developers can assemble cloud applications from cloud components. This resembles the way they would compose traditional applications from software modules. The benefit is less repeated work to implement the same features in every project over and over again.

            In the following sections we’ll take a look at some new technologies for developing cloud components.

            AWS CDK

            AWS CDK, short for Cloud Development Kit, is Amazon’s new framework for defining AWS cloud infrastructure with code. It currently supports TypeScript, JavaScript and Java with more language support coming later.

            When developing with AWS CDK, you use code to define both infrastructure and business logic. These codebases are separate. You define your component’s deployment logic in one script file, and your Lambda function code in another script file. These files don’t have to be written in the same programming language.

            AWS CDK includes the AWS Construct Library, which provides a selection of predefined cloud components to be used in applications. It covers a large portion of Amazon’s AWS cloud services, although not all of them.

            These predefined constructs are the smallest building blocks available in AWS CDK. For instance, you can use the AWS DynamoDB construct to create a database table. The deployment process translates this construct into a CloudFormation resource, and CloudFormation creates the actual table.

            The real power of AWS CDK comes from the ability to combine the smaller constructs into larger reusable components. You can define an entire microservice, including all the cloud resources it needs, and use it as a component in a larger application.

            This modularity can also help standardize multi-team deployments. When everybody delivers their service as an AWS CDK construct, it’s straightforward to put all the services together without spending lots of time writing custom deployment scripts.

            AWS CDK may become very important for cloud application development if third parties start publishing their own Construct Libraries online. There could eventually be very large selection of reusable cloud components available in an easily distributable and deployable format. Right now the framework is still pending a 1.0 release before freezing its APIs.

            Serverless Components

            Serverless Components is an ambitious new project by the makers of the hugely popular Serverless Framework. It aims to offer a cloud-agnostic way of developing reusable cloud components. These components can be assembled into applications or into higher order components.

            The basic idea of Serverless Components is similar to AWS CDK. But while CDK uses a programming language to define components, Serverless has chosen a declarative YAML syntax instead. This results in simpler component definitions but you also lose a lot of flexibility. To remedy this, Serverless Components lets you add custom JavaScript files to perform additional deployment operations.

            The Serverless Components project has its own component registry. The registry includes some basic components for Amazon AWS, Google Cloud, Netlify and GitHub. Unlike in some other projects, developers are writing these components manually instead of auto-generating them from service definitions. It will probably take a while before all cloud features are supported.

            One controversial design decision of Serverless Components is to bypass the AWS CloudFormation stack management service. The tool creates components directly on AWS and other cloud platforms. It writes their state to a local state.json file, which developers must share.

            This approach offers speed, flexibility and multi-cloud support, but also requires Serverless Components to handle deployments flawlessly in every situation. Enterprise AWS users will probably be wary of adopting a solution that bypasses CloudFormation entirely.

            Pulumi

            Pulumi.io is a cloud component startup offering a SaaS service subscription combined with an open source framework. Essentially Pulumi aims to replace AWS CloudFormation and other cloud deployment tools with its own stack management solution. Pulumi’s cloud service deploys the actual cloud applications to Amazon AWS, Microsoft Azure, Google Cloud, Kubernetes or OpenStack.

            Pulumi supports a higher level of abstraction than the other component technologies discussed here. When you implement a serverless service using Pulumi’s JavaScript syntax, the code gets translated to a format suitable for the platform you are deploying on. You write your business logic as JavaScript handler functions for Express API endpoints. Pulumi’s tool extracts those handlers from the source code and deploys them as AWS Lambda functions, Azure Functions or Google Cloud Functions.

            Writing completely cloud-agnostic code is challenging even with Pulumi’s framework. For certain things it offers cloud-agnostic abstractions like the cloud.Table component. When you use cloud. Table, your code automatically adapts to use either DynamoDB or Azure Table Storage depending on which cloud platform you deploy it on.

            For many other things you have to write cloud-specific code. Or, you can write your own abstraction layer to complement Pulumi’s framework. Such abstraction layers tend to add complexity to applications, making it harder for developers to understand what the code is actually doing.

            Ultimately it’s up to you to decide whether you want to commit to developing everything on top of an abstraction layer which everybody must learn. Also, as with Serverless Components, you can’t use AWS CloudFormation to manage your Pulumi-based stacks.

            Conclusion

            The main issue to consider in choosing a cloud component technology is whether you need multi-cloud support or not. Single-cloud development is arguably more productive and lets developers leverage higher level cloud services. On the other hand this results in increased vendor-lock, which may or may not be a problem.

            For developers focusing on Amazon AWS, the AWS CDK is a fairly obvious choice. AWS CDK is likely to become a de-facto standard way of packaging AWS-based cloud components. As serverless applications get more and more popular, AWS CDK fills some important blank spots in the CloudFormation deployment process and in the reusability of components. And since AWS CDK still uses CloudFormation under the hood, adopters will be familiar with the underlying technology.

            Developers that truly require multi-cloud will have to consider whether it’s acceptable to rely on Pulumi’s third party SaaS service for deployments. If the SaaS service goes down, deployed applications will keep working but you can’t update them. This is probably not a big problem for short periods of time. It will be more problematic if Pulumi ever shuts down the service permanently. For projects where this is not an issue, Pulumi may offer a very compelling multi-cloud scenario.

            Multi-cloud developers that want to contribute to open source may want to check out the Serverless Components project. It’s too early to recommend using this project for actual use cases yet, but it may have an interesting future ahead. The project may attract a lot of existing users if the developers are able to provide a clear migration path from Serverless Framework.

            If you would like more information on how Nordcloud can help you with serverless technologies, contact us here.

            Blog

            Starter for 10: Meet Jonna Iljin, Nordcloud’s Head of Design

            When people start working with Nordcloud, they generally comment on 2 things. First, how friendly and knowledgeable everyone is. Second,...

            Blog

            Building better SaaS products with UX Writing (Part 3)

            UX writers are not omniscient, and it’s best for them to resist the temptation to work in isolation, just as...

            Blog

            Building better SaaS products with UX Writing (Part 2)

            The main purpose of UX writing is to ensure that the people who use any software have a positive experience.

            Get in Touch

            Let’s discuss how we can help with your cloud journey. Our experts are standing by to talk about your migration, modernisation, development and skills challenges.