[vc_row type=”full_width_background” full_screen_row_position=”middle” column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” bg_color=”#333333″ bg_image=”1158″ bg_position=”left bottom” bg_repeat=”no-repeat” scene_position=”center” top_padding=”25%” bottom_padding=”6%” text_color=”light” text_align=”left” row_border_radius=”none” row_border_radius_applies=”bg” color_overlay=”#000a16″ overlay_strength=”0.3″ gradient_direction=”left_to_right” shape_divider_position=”bottom” bg_image_animation=”none” parallax_bg=”true” parallax_bg_speed=”fast” shape_type=””][vc_column column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/1″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][split_line_heading animation_type=”default” max_width=”700″]

Legacy System Transition

[/split_line_heading][/vc_column][/vc_row][vc_row type=”full_width_background” full_screen_row_position=”middle” column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” scene_position=”center” top_padding=”10%” constrain_group_1=”yes” bottom_padding=”10%” text_color=”dark” text_align=”left” row_border_radius=”none” row_border_radius_applies=”bg” color_overlay=”rgba(0,0,0,0.01)” overlay_strength=”0.8″ gradient_direction=”top_to_bottom” shape_divider_position=”bottom” bg_image_animation=”none” parallax_bg=”true” parallax_bg_speed=”fast” shape_type=””][vc_column column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/1″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][vc_row_inner column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” text_align=”left”][vc_column_inner column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”2/3″ tablet_width_inherit=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][vc_column_text]

Challenge

[/vc_column_text][vc_column_text]

Emerging from its startup phase and beginning to scale, a power consumption monitoring firm still relied on just one in-house engineer to design, develop, and implement its product. While trying to on-board new customers, service existing ones, and deliver new functionality, their engineer jumped ship leaving them to pick up the pieces.

[/vc_column_text][/vc_column_inner][vc_column_inner column_padding=”padding-3-percent” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”top” centered_text=”true” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/3″ tablet_width_inherit=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][vc_custom_heading text=”“Our legacy system gave us a solid foundation to launch our business, but we couldn’t keep relying on a single technical wizard.”” font_container=”tag:h3|font_size:23|text_align:center|color:%231e3b6e|line_height:1.7″ google_fonts=”font_family:Merriweather%3A300%2C300italic%2Cregular%2Citalic%2C700%2C700italic%2C900%2C900italic|font_style:300%20light%20italic%3A300%3Aitalic”][divider line_type=”No Line” custom_height=”20″][vc_column_text]CEO
Power Services Firm
[/vc_column_text][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row][vc_row type=”full_width_background” full_screen_row_position=”middle” column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” bg_color=”#1b3354″ scene_position=”center” top_padding=”10%” constrain_group_1=”yes” bottom_padding=”10%” text_color=”light” text_align=”left” row_border_radius=”none” row_border_radius_applies=”bg” color_overlay=”rgba(0,0,0,0.01)” overlay_strength=”0.8″ gradient_direction=”top_to_bottom” shape_divider_position=”bottom” bg_image_animation=”none” shape_type=””][vc_column column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/1″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][vc_row_inner column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” text_align=”left”][vc_column_inner column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color_opacity=”1″ background_hover_color_opacity=”1″ font_color=”#dbdbdb” column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/1″ tablet_width_inherit=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][vc_column_text]

Custom Solution

[/vc_column_text][vc_custom_heading text=”Our client hosted its production stack in AWS using dedicated EC2 servers running Kubernetes. The existing application consisted of hardware with embedded custom firmware, a data processor/stream monitoring backend (Rust), a data listener service (Rust & MQTT), a NoSQL database, a dashboard and reporting server (Grafana), and a mobile app (iOS and Android).” font_container=”tag:h5|font_size:24|text_align:left|color:%23ffffff|line_height:1.55″ google_fonts=”font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:300%20light%20regular%3A300%3Anormal”][divider line_type=”No Line” custom_height=”25″][vc_custom_heading text=”To make progress, the team needed to first reverse engineer what amounted to a handful of integrated black boxes, all while on-boarding new customers and not disrupting existing ones.” font_container=”tag:h5|font_size:25|text_align:left|color:%23ffffff|line_height:1.6″ google_fonts=”font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:300%20light%20regular%3A300%3Anormal”][/vc_column_inner][/vc_row_inner][vc_row_inner equal_height=”yes” column_margin=”20px” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” text_align=”left”][vc_column_inner column_padding=”padding-3-percent” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color=”#47ccc1″ background_color_opacity=”1″ background_hover_color_opacity=”1″ font_color=”#ffffff” column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/3″ tablet_width_inherit=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][divider line_type=”No Line” custom_height=”40″][vc_column_text]

Approach

[/vc_column_text][vc_column_text]

The team gained access to the client’s repository and existing documentation and then conducted a source code review. In addition, a review of the AWS production footprint was conducted for comparison to setup and deployment scripts. Various components were built and compiled in accordance with the production environment. A minikube was used to create a fully functional ecosystem matching the Kubernetes installation in AWS.

[/vc_column_text][/vc_column_inner][vc_column_inner column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color_opacity=”1″ background_hover_color_opacity=”1″ background_image=”1135″ background_image_position=”center top” font_color=”#ffffff” column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”2/3″ tablet_width_inherit=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][image_with_animation image_url=”1136″ animation=”Fade In” hover_animation=”none” alignment=”” border_radius=”none” box_shadow=”none” image_loading=”default” max_width=”100%” max_width_mobile=”default”][/vc_column_inner][/vc_row_inner][vc_row_inner equal_height=”yes” column_margin=”20px” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” text_align=”left”][vc_column_inner column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color=”#007dd1″ background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”2/3″ tablet_width_inherit=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][image_with_animation image_url=”1161″ animation=”Fade In” hover_animation=”none” alignment=”” border_radius=”none” box_shadow=”none” image_loading=”default” max_width=”100%” max_width_mobile=”default”][/vc_column_inner][vc_column_inner column_padding=”padding-3-percent” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color=”#1f4f94″ background_color_opacity=”1″ background_hover_color_opacity=”1″ font_color=”#e2e2e2″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/3″ tablet_width_inherit=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][divider line_type=”No Line” custom_height=”80″][vc_column_text]

Process

[/vc_column_text][fancy-ul icon_type=”font_icon” icon=”icon-long-arrow-right” color=”Extra-Color-3″ alignment=”left” spacing=”default”]

  • Cloud Architecture Design
  • Mobile App Development
  • DevOps
  • Production Support

[/fancy-ul][/vc_column_inner][/vc_row_inner][vc_row_inner equal_height=”yes” column_margin=”20px” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” text_align=”left”][vc_column_inner column_padding=”padding-3-percent” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color=”#1d7dd1″ background_color_opacity=”1″ background_hover_color_opacity=”1″ font_color=”#f9f9f9″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/3″ tablet_width_inherit=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][divider line_type=”No Line” custom_height=”40″][vc_column_text]

Overcoming Roadblocks

[/vc_column_text][vc_column_text]

The initial code review and production setup uncovered the fact that the client’s existing documentation was outdated and incomplete. This forced the team to create the necessary documentation for development and build tools through trial and error. Although it made the process more tedious and time-consuming, the team was able to identify and understand all the moving parts in spite of the missing documentation.

[/vc_column_text][/vc_column_inner][vc_column_inner column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color_opacity=”1″ background_hover_color_opacity=”1″ background_image=”1142″ background_image_position=”center center” font_color=”#ffffff” column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”2/3″ tablet_width_inherit=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][image_with_animation image_url=”1163″ animation=”None” hover_animation=”none” alignment=”” border_radius=”none” box_shadow=”none” image_loading=”default” max_width=”100%” max_width_mobile=”default”][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row][vc_row type=”full_width_background” full_screen_row_position=”middle” column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” scene_position=”center” top_padding=”10%” text_color=”dark” text_align=”left” row_border_radius=”none” row_border_radius_applies=”bg” overlay_strength=”0.3″ gradient_direction=”left_to_right” shape_divider_position=”bottom” bg_image_animation=”none” shape_type=””][vc_column column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/1″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none” offset=”vc_col-xs-12″][vc_column_text]

Results

[/vc_column_text][vc_column_text]

Over the course of the transition, the team on-boarded four new clients, delivered app store updates, and proactively found and fixed a server certificate issue which would have brought down the whole service. In addition, they released a new user-driven dashboard component.

[/vc_column_text][/vc_column][/vc_row][vc_row type=”full_width_background” full_screen_row_position=”middle” column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” scene_position=”center” top_padding=”2%” bottom_padding=”3%” text_color=”dark” text_align=”left” row_border_radius=”none” row_border_radius_applies=”bg” overlay_strength=”0.3″ gradient_direction=”left_to_right” shape_divider_position=”bottom” bg_image_animation=”none” shape_type=””][vc_column column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/1″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][vc_row_inner column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” text_align=”left”][vc_column_inner column_padding=”padding-4-percent” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/3″ tablet_width_inherit=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][milestone heading_inherit=”h1″ symbol_position=”after” subject_padding=”2%” color=”Extra-Color-2″ effect=”count” symbol_alignment=”Default” milestone_alignment=”default” number=”90″ subject=”Transition” number_font_size=”110″ symbol=”Days” symbol_font_size=”25″][/vc_column_inner][vc_column_inner column_padding=”padding-4-percent” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/3″ tablet_width_inherit=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][milestone heading_inherit=”h1″ symbol_position=”after” subject_padding=”4%” color=”Extra-Color-3″ effect=”count” symbol_alignment=”Default” milestone_alignment=”default” number=”0″ subject=”Downtime” number_font_size=”110″ symbol=”Mins” symbol_font_size=”25″][/vc_column_inner][vc_column_inner column_padding=”padding-4-percent” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/3″ tablet_width_inherit=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][milestone heading_inherit=”h1″ symbol_position=”after” subject_padding=”2%” color=”Accent-Color” effect=”count” symbol_alignment=”Superscript” milestone_alignment=”default” number=”100″ subject=”Client Goals Met” number_font_size=”110″ symbol=”%”][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row][vc_row type=”full_width_background” full_screen_row_position=”middle” column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” scene_position=”center” bottom_padding=”20px” text_color=”dark” text_align=”left” row_border_radius=”none” row_border_radius_applies=”bg” overlay_strength=”0.3″ gradient_direction=”left_to_right” shape_divider_position=”bottom” bg_image_animation=”none” shape_type=””][vc_column column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/1″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][image_with_animation image_url=”1137″ animation=”Fade In” hover_animation=”none” alignment=”” border_radius=”none” box_shadow=”none” image_loading=”default” max_width=”100%” max_width_mobile=”default”][image_with_animation image_url=”1132″ animation=”Fade In” hover_animation=”none” alignment=”” border_radius=”none” box_shadow=”none” image_loading=”default” max_width=”100%” max_width_mobile=”default”][/vc_column][/vc_row][vc_row type=”full_width_background” full_screen_row_position=”middle” column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” scene_position=”center” top_padding=”3%” bottom_padding=”3%” text_color=”dark” text_align=”center” row_border_radius=”none” row_border_radius_applies=”bg” overlay_strength=”0.3″ gradient_direction=”left_to_right” shape_divider_position=”bottom” bg_image_animation=”none” shape_type=””][vc_column column_padding=”padding-13-percent” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”left-right” centered_text=”true” background_color_opacity=”1″ background_hover_color_opacity=”1″ font_color=”#f7f7f7″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/1″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none” offset=”vc_col-xs-12″][vc_custom_heading text=”“Our technology went through a huge transformation and upgrade in a short amount of time. And our customers didn’t experience a single hiccup. That says it all.”” font_container=”tag:h3|font_size:25|text_align:center|color:%232daac6|line_height:1.7″ google_fonts=”font_family:Merriweather%3A300%2C300italic%2Cregular%2Citalic%2C700%2C700italic%2C900%2C900italic|font_style:300%20light%20italic%3A300%3Aitalic”][divider line_type=”No Line” custom_height=”20″][vc_column_text]CEO
Power Services Firm[/vc_column_text][/vc_column][/vc_row][vc_row type=”full_width_background” full_screen_row_position=”middle” column_margin=”default” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” scene_position=”center” text_color=”dark” text_align=”left” row_border_radius=”none” row_border_radius_applies=”bg” overlay_strength=”0.3″ gradient_direction=”left_to_right” shape_divider_position=”bottom” bg_image_animation=”none” shape_type=””][vc_column column_padding=”no-extra-padding” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” background_color_opacity=”1″ background_hover_color_opacity=”1″ column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/1″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none”][divider line_type=”No Line” custom_height=”55″][/vc_column][/vc_row][vc_row type=”full_width_content” full_screen_row_position=”middle” column_margin=”default” equal_height=”yes” content_placement=”middle” column_direction=”default” column_direction_tablet=”default” column_direction_phone=”default” scene_position=”center” text_color=”light” text_align=”left” row_border_radius=”none” row_border_radius_applies=”bg” overlay_strength=”0.3″ gradient_direction=”left_to_right” shape_divider_position=”bottom” bg_image_animation=”none”][vc_column column_padding=”padding-8-percent” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” centered_text=”true” background_color=”#2d2d2d” background_color_opacity=”0.4″ background_hover_color_opacity=”0.4″ background_image=”810″ background_image_position=”center center” enable_bg_scale=”true” column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/2″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none” enable_animation=”true” animation=”grow-in”][divider line_type=”No Line” custom_height=”50″][vc_custom_heading text=”Replacing a Legacy System” font_container=”tag:h3|text_align:center” use_theme_fonts=”yes”][nectar_btn size=”large” button_style=”see-through-2″ hover_text_color_override=”#ffffff” icon_family=”none” url=”#” text=”Previous Project” margin_top=”25″][divider line_type=”No Line” custom_height=”50″][/vc_column][vc_column column_padding=”padding-8-percent” column_padding_tablet=”inherit” column_padding_phone=”inherit” column_padding_position=”all” centered_text=”true” background_color=”#2d2d2d” background_color_opacity=”0.5″ background_hover_color_opacity=”0.5″ background_image=”1103″ background_image_position=”center center” enable_bg_scale=”true” column_shadow=”none” column_border_radius=”none” column_link_target=”_self” gradient_direction=”left_to_right” overlay_strength=”0.3″ width=”1/2″ tablet_width_inherit=”default” tablet_text_alignment=”default” phone_text_alignment=”default” column_border_width=”none” column_border_style=”solid” bg_image_animation=”none” enable_animation=”true” animation=”grow-in” delay=”150″][divider line_type=”No Line” custom_height=”50″][vc_custom_heading text=”Supply Chain Portal” font_container=”tag:h3|text_align:center” use_theme_fonts=”yes”][nectar_btn size=”large” button_style=”see-through-2″ hover_text_color_override=”#ffffff” icon_family=”none” url=”#” text=”Visit” margin_top=”25″][divider line_type=”No Line” custom_height=”50″][/vc_column][/vc_row]