Development

Cloud development allows software engineers to collaborate in real-time,
 track changes, and work on multiple branches of a codebase. 

 


Patterns & Practices

Faster development is just one advantage for a technology that should be front and center in your cloud strategy!

 

Odoo text and image block

Why should I develop software in the  GMX cloud?

Cloud providers offer various solutions that make everyday tasks much easier and provide support for fast and short-term demands.

If you want to build or test a checked-in source code, you can do it in the cloud – quickly and inexpensively. To this purpose build servers or test environments can be used in the cloud. This means you are prepared for continuous integration and continuous deployment from the outset. Your applications are built, tested and rolled out without anyone having to manually create, set up or maintain a virtual machine (VM). And you only pay for what you need.


Development in the cloud: All the advantages at a glance.


No bottlenecks as the necessary resources are quickly made available.


Pay-as-you-use: You only pay for what you really need.


Scalability: Your environment grows with your needs/challenges.

 

Low prices. The service is even free of charge for small teams of up to five people

Interested?
Talk to a GMX TEC Expert

We offer the best solutions for your Cloud
based on our expertise in DevOps

 

Reference Architectures

Our reference architectures are arranged by scenario, with related architectures grouped together.

Running Windows VM workloads

  • Single VM

  • Load Balance VM

  • N-Tier Application

  • Multi-region Application 

Running Linux VM workloads

  • Single VM

  • Load Balance VM

  • N-Tier Application

  • Multi-region Application 

Connect an on-premises network to GMX

  • VPN

  • ExpressRoute

  • ExpressRoute with VPN failover

  • Hub-spoke topology

Network DMZ

  • DMZ between GMX and on-premises

  • DMZ between GMX and the internet

Identity Management

 These reference architectures show options for integrating your on-premises Active Directory (AD) environment with a GMX TEC network.

App Service web application

  • Basic Web Application

  • Improved Scalability

  • Run in multiple regions

Contact us and request a quote 

Customization

The benefit to custom software is the simple fact that it provides features off-the-shelf that non-proprietary software doesn’t.
 

Odoo image and text block
In an environment where complexity reigns, we make things simple. We believe in practical solutions that are grounded in the reality of your business.
 By clearly identifying your unique requirements, we offer tailored solutions from a combination of consulting, software assets, products, and related integration services. 
Placing more value on results than theory leads to your real business success. Our great strategy is backed up with excellent engineering and professional delivery. 
All our teams are structured around driving real business performance. 
Many global customers have achieved improved business performance through our improved operational efficiency and successful launches of new services and systems.

Differentiation

It will be virtually impossible for anyone to copy, making your design very secure.

Reduced Time to Market

You get to market much faster using our processors no matter how you compare them to other solutions.

Flexibility

Instead of a hard-wired block, you have a programmable processor-based solution, so you can make changes, even after tapeout, via the software.

Best Performance, Power, and Area

A designer can add a few custom instructions to marginally increase the core's size, which in turn marginally increases the average power dissipation per clock cycle.

Best Practices  

Software engineering rules and testing best practices 

     Development process

It is important to choose the appropriate development lifecycle process to the project at hand because all other activities are derived from the process.

   Architecture

Choosing the appropriate architecture for your application is key. Our consultants can work side by side with your team and ensure that the projects get started on the right track.


    Design

The two basic principles here are "Keep it Simple" and information hiding. For many projects, it is important to perform Object-Oriented Analysis and Design.

    Requirements

Gathering and agreeing on requirements is fundamental to a successful project. This does not necessarily imply that all requirements need to be fixed before any architecture, design, and coding are done, but it is important for the development team to understand what needs to be built

   Construction of the code

 Construction of the code is a fraction of the total project effort, but it is often the most visible.A best practice for constructing code includes the daily build and smoke test.

   Testing

Testing is not an afterthought or cutback when the schedule gets tight. It is an integral part of software development that needs to be planned.


    Performance testing

Testing is usually the last resort to catch application defects. It is labor intensive and usually only catches coding defects. Architecture and design defects may be missed. 


   Quality and defects       management

It is important to establish quality priorities and release criteria for the project so that a plan is constructed to help the team achieve quality software. As the project is coded and tested, the defect arrival and fix rate can help measure the maturity of the code.


  Data migration

Most applications are not brand new but are enhancements or rewrites of existing applications. Data migration from the existing data sources is usually a major project by itself.

    Configuration management

Configuration management involves knowing the state of all artifacts that make up your system or project, managing the state of those artifacts, and releasing distinct versions of a system.

  Project management

Project management is key to a successful project."If you fail to plan, you plan to fail."And at GMX we know how to plan for success.

System operations and support

Without the operations department, you cannot deploy and support a new application. The support area is a vital factor to respond to and resolve user problems. To ease the flow of problems, the support problem database is hooked into the application defect tracking system.

Continuous Integration

 

What is Continuous Integration  

Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day.

Each check-in is then verified by an automated build, allowing teams to detect problems early.

GMX is integrating regularly, so we can detect errors quickly, and locate them more easily.

How to do it

Developers in GMX  check out code into their private workspaces   

When done, commit the changes to the repository

 The server monitors the repository and checks out changes when they occur   

The server builds the system and runs unit - integration tests 


The server releases deployable artifacts for testing 
         
The  server assigns a build label to the version of the code it just built


The  server informs the team of the successful build
          
If the build or tests fail, the  server alerts the team


The team fixes the issue at the earliest opportunity
           
Continue to continually integrate and test throughout the project


Key Features

Risk Mitigation

Since local development environments often differ from where the website will actually run on the internet, there can be a number of things that are different between your local environment and where you push to production. Continuous Integration allows you to mitigate risk not only with testing but also by enabling production parity.

Reduced Overhead

Development hours are typically billable hours, but what about time spent manually deploying code or files? Automating large parts of your workflow will free up time for billable work, which is something everyone can appreciate.

Build Process Consistency 

Moving parts of the development workflow—such as a build step compiling assets, like Sass to CSS—allows this to happen the same way, every time. Having automated testing and other items run on CI means that nobody ever forgets a step in the process.


Automated Testing

Odoo image and text block

Why Automated Testing?

Every software development group tests its products, yet delivered software always has defects. Test engineers strive to catch them before the product is released but they always creep in and they often reappear, even with the best manual testing processes.

Test Automation software is the best way to increase the effectiveness, efficiency, and coverage of your software testing.    

Automated Software Testing Saves Time and Money

Manually repeating these tests is costly and time-consuming. Once created, automated tests can be run over and over again at no additional cost and they are much faster than manual tests. Automated software testing can reduce the time to run repetitive tests from days to hours.

Vastly Increases Your Test Coverage

Automated software testing can look inside an application and see memory contents, data tables, file contents, and internal program states to determine if the product is behaving as expected.

Testing Improves Accuracy


Test automation can easily execute thousands of different complex test cases during every test run providing coverage that is impossible with manual tests.

          There are several different types of software tests that can be automated.    

          Unit Testing - Functional Testing - Regression Testing - Black Box Testing -  Integration Testing  - Keyword Testing -  Data Driven Testing  - Smoke Testing


          Version  Control

           

          Importance of Version Control

          Version control systems are software that help you track changes you make in your code over time. As you edit to your code, you tell the version control system to take a snapshot of your files. The version control system saves that snapshot permanently so you can recall it later if you need it.

          Without version control, you’re tempted to keep multiple copies of code on your computer. This is dangerous-it’s easy to change or delete a file in the wrong copy of code, potentially losing work. Version control systems solve this problem by managing all versions of your code but presenting you with a single version at a time.

           

          Odoo text and image block

            Create workflows

          Version control workflows prevent the chaos of everyone using their own development process with different and incompatible tools. Version control systems provide process enforcement and permissions so everyone stays on the same page.


          Code Together

          Version control synchronizes versions and makes sure that your changes don’t conflict with other changes from your team. Your team relies on version control to help resolve and prevent conflicts, even when people make changes at the same time.


          Automate tasks

          Version control automation features save your team time and generate consistent results. Automate testing, code analysis, and deployment when new versions are saved to version control.


          Keep a history

          Version control keeps a history of changes as your team saves new versions of your code. This history can be reviewed to find out who, why, and when changes were made. History gives you the confidence to experiment since you can roll back to a previous good version at any time. History lets you base work from any version of code, such as to fix a bug in a previous release.

          Work with versions

          Every version has a description for what the changes in the version do, such as fix a bug or add a feature. These descriptions help you follow changes in your code by version instead of by individual file changes. Code stored in versions can be viewed and restored from version control at any time as needed. This makes it easy to base new work off any version of code.

          Why version control matters

          There are plenty of things that can take up your time as a developer-reproducing bugs, learning new tools, and adding new features or content. As the demands of your users scale up, version control helps your team work together and ship on time.