Notch8 Ruby on Rails Web Application Developers

Full-throttle Ruby on Rails Development

  • About
    • Team
    • Active Clients
  • Work
    • Capabilities
    • Framework Updates
    • HykuUP
    • Code Audits and Reviews
    • Ongoing Application Maintenance and Support
  • Clients
    • Case Study: Vizer
    • Case Study: Atla Digital Libary
    • Case Study: ShopTab
    • Case Study: UCSD
    • Case Study: WUSTL
    • Case Study: UCLA
  • Samvera
  • Blog
  • Contact
You are here: Home / Archives for Kevin Kochanski

Containerizing Your Applications With Docker

July 19, 2020 by Kevin Kochanski Leave a Comment

Docker and Kubernetes are pathways to more efficient development cycles and smoother, more reliable deployment for your application. These two platforms work together, one building on the other for managing containerized applications that make them lightweight and stable, which are huge pluses for your business. If Docker is the set of big steal boxes you put your applications in to make transporting them easy, Kubernetes is the network of trucks, boats and cranes that get them into place for production.

Containers, Docker, and Kubernetes

Docker logoContainers are stand-alone packages that bundle everything required to run an application: code, libraries, system configurations, and other dependencies. Containerization is the use of these packages for application deployment or development. This encapsulation allows applications and components in different containers to be isolated from each other and the host machine It solves the problem of “well it worked on my machine” by packaging all those dependencies and configurations with the application every time it’s run, no matter where. What works in Docker on your machine will work in Docker in production.

Containerization is more lightweight and less hard-ware intensive than running on virtual machines, which require a discreet operating system for each application. Subsequently, there can be significant cost savings to running containerized environments.

Docker is an open source project used by developers and system engineers to build, run, and deploy containerized applications in virtually any environment. It is especially useful for deployment to the cloud. It provides a sort of instruction manual, the Docker image, which includes everything needed to run an app, including code and dependencies, setting up the private file system that the isolated container interacts with. Docker is a means to getting more apps running on existing servers, and is especially useful at supporting a microservices architecture.

Kubernetes is a platform for management and deployment of containerized applications. From the outside, it can seem like conversations about containerization use “Docker” and “Kubernetes” almost interchangeably, and once upon a time this was closer to true than it is today. However they are not simply two brands of the same product. Docker is a platform for creating and running containers, Kubernetes is an orchestration system for containers, used for automated deployment and monitoring of containers. Docker offers Docker Swarm, which does manage much of the same territory as Kubernetes. However, Kubernetes has more or less won out as the industry standard. Other tools, like Rancher, have even abandoned their own implementations for a solely Kubernetes-powered orchestration.

Docker and Kubernetes both have the advantage of being open source products. Using Docker for containerization is a huge efficiency gain for your development process even if you opt not to deploy to a Kubernetes cluster.

Why Docker?

Containers offer portable, lightweight packages for easy deployment of applications. But the meaning of that and the list of reasons to containerize applications goes deeper. Portability means developers can build locally and easily deploy to the cloud, and the flexibility of containers allow even complex applications to benefit. Key to the lightweight property of containers is that many applications can operate on one machine with one operating system, eliminating the heavy setup of virtual machines with individual operating systems. Containerizing your application allows 4 to 6 times the number of server applications to be run on the same hardware. 

Scalability is another key attraction for containerization, allowing for greater ability to increase and distribute containers across multiple servers. The isolated nature of containers also allows you to upgrade or completely replace one without threatening the rest of the application. 

Docker helps you create and manage containers for your applications. It provides a pathway to smooth, frequent software delivery. Irregular or infrequent deployments open the door for security issues and require more overhead. High performing teams deploy often, and Dockerized applications allow easy and confident deployment. 

There are several noteworthy benefits to Dockerizing your applications:

  1. Consistency. Docker containers are identical on any system, with the exact specifications stored in the Dockerfile. This guarantees all builds will run identically, affording confidence as well as ease of identifying problematic issues.
  2. Security. Because Docker app components are isolated, many security issues remain contained.
  3. Conflict Reduction. The use of separate containers helps reduce clashing dependencies, both within an applications’ components and across multiple applications.
  4. Environment Compartmentalization. Docker gives the opportunity for separate containers for testing, development, and production and makes it easy to deploy each.
  5. CI Support. Docker works with continuous integration tools, so that whenever code is updated, it pushes to Docker Hub and then deploys to production.
  6. Faster Onboarding. Development in containerized environments provides a simplified training process for new team members.

Summary

Dockerizing your applications can get more applications running on the same hardware with lower overhead costs. It allows developers to easily create containerized applications that are ready to run, and makes management and deployment much more efficient.

Choosing the best approach to containerization for your products’ needs can be overwhelming. Full Kubernetes for app management can be overkill, and having an experienced system engineer set up your platform is vital to mitigate performance, security, and configuration issues. Notch8 containerizes applications for most of our projects and we have extensive experience implementing Docker and Kubernetes.

We’d be happy to discuss how these solutions can help your product on a more efficient path to success. Contact Us with questions for our experienced DevOps team.

Additional Resources:

  • How to Get Started with Docker
  • Getting Started with Kubernetes

Filed Under: Blog

What Makes React Native a Versatile Business Solution?

April 27, 2020 by Kevin Kochanski Leave a Comment

Choosing the right framework for your business’s mobile app may seem inconsequential. To non-developers, languages and frameworks may feel like interchangeable equal paths to building your web or mobile app. But the truth is there are significant business advantages to choosing the right technologies. React Native is a mobile framework that was introduced in 2015 and has built a significant reputation. But is it deserved? Is it the right solution for your business’s app?

What is React Native?

There are many viable mobile app frameworks, but a few things make React Native unique among the options. First and foremost is that React Native is a cross-platform framework, versatile for developing apps for both iOS and Android, as opposed to native apps built strictly for one platform. The code base requires some performance configuration between the platforms, but the bulk of it will apply to both systems – up to 95% shared code. While native apps are built to perform for their platform from inception, the decision to launch on a second platform can be a costly one, requiring an effort akin to rebuilding from scratch. React Native’s versatility affords a significant savings in time and money for a product with goals that include both platforms.

In React Native, all the logic is in JavaScript – the world’s most widely used coding language. It uses a single base code for all UI components and converts them into iOS or Android views. Developed out of a Facebook hackathon, React Native enjoys a usefulness and importance beyond the cache of having a behemoth like Facebook behind it.

What makes React Native attractive?

Having powerhouse players invested has its advantages. Uber Eats, Discord, Instagram, and Walmart are just a few of the giants that rely on React Native. That backing insures React Native’s longevity as a well-supported technology. As an open-source framework with wide usage in general, it benefits from a large community of developers providing constant attention and scrutiny.

There are also more tangible values that React Native offers, including cost-effectiveness, good availability of developer talent, shorter lead time to market, and regular code maintenance. For developers, the wide use means that there are a lot of other people out there solving the same problems, making the solutions to their puzzles easier to find. Live reload capacity in React Native also allows developers to view the latest code changes instantly, minimizing the lag cycle of staging and rework, and getting your features to market more quickly. 

A significant saving of time, money, and heartache in the development process comes from the reusability of UI components, which allows iOS and Android to share so much code. With that structure, many bugs in your application can be fixed to both platforms with one effort.

Why is React Native a good business solution?

With React Native, your business’s strategic decision of choosing to reach either iOS or Android customers is no longer “if” but “when.” At this point, it’s pretty clear that there’s significant time and cost savings found in the mutual development for both platforms with React Native. And building a true mobile app has better performance and other advantages over other quicker, cheaper solutions such as web-based mobile. But there are also factors that make React Native the perfect choice for a startup.

Building with React Native provides quick-to-market capability. It’s a great platform for building an MVP due to code efficiency and quicker development timelines. React Native’s component structure allows a product to start small and build on it piece by piece, feature by feature in response to customer needs or investor requests. Building an MVP quickly is also a bonus to tight budgets, allowing you to collect feedback before prioritizing the next features.

Your app’s UX is important to investors, and making a good show is crucial to impressing them. Stability and good usability in a product translates to a good customer experience and good sales. React Native makes UX a priority. It’s also versatile to allow quick implementation of new feature requests and other changes in business direction that necessitate changes in your app. This has been a particular asset during the COVID-19 pandemic, which has necessitated changes in business models and swift delivery of new features in mobile products in response to those shifts. 

How do you ensure your business gets the most out of its application?

There are some risks associated with React Native. An unskilled approach to the code could result in less than optimal app performance. It can perform more slowly than a native app, but the right developer will be able to configure a React Native app to perform comparably to a native one.

Scalability is another risk with React Native, and one that a startup especially will want to be wary of to avoid speed bumps at a time of accelerated growth. The community has responded to past scalability issues in React Native, but starting with a good foundation architecture is crucial to success.

While React Native is an excellent cross-platform framework, building for Android can be a heavier lift than for iOS. Having a team with experience in both will help prevent pitfalls.

As with any business investment, you need to be sure your team has the right skill set to provide something so crucial to the enterprise. Whether building an internal team or outsourcing development, onboarding a team with a deep bench in React Native is important to the success of your venture. 

Notch8 has been building in React Native almost since its introduction as a viable platform. Our React Native mobile clients have included growing companies with unique visions like Vizer and Scientist.com, and the youth-oriented nonprofit Moishe House. Contact Us to discuss your development needs. We’d be happy to talk through React Native and the right solutions for your business.

Filed Under: Blog, Business Buzz Tagged With: Mobile Apps, React Native

Upgrading Your App to Rails 6

April 7, 2020 by Kevin Kochanski Leave a Comment

You may know Ruby on Rails 6 was released recently, but what does that mean for your Rails app?  Is it time for an upgrade?

Rails 6 was released in August 2019 and brings a lot of upgrades out of the box that offer improved performance, security, and additional feature options.

  • Parallel testing support reduces the time of running an entire test suite
  • Action Text utilizes Trix editor to bring WYSIWYG rich text content and editing to Rail
  • Support of multiple databases out of the box
  • Action Mailbox handles inbound email routing
  • Zeitwerk code loader 
  • In security, Host Authorization guards against DNS attacks by allowing only permitted hosts to access your application  

While Rails 6 allows your application to take advantage of these new features, it’s also important to understand when an upgrade is essential to ensure performance and uptime of your app.  Rails 4 or earlier is no longer supported, no longer receiving vital security patches.  Rails 5.0 is still receiving critical patches for now, but will be the next version to age out of support.  Releases Rails 5.2 and higher are still receiving regular security updates.

When undertaking any Rails upgrade, you’ll start by determining your current version of Ruby and Ruby on Rails – Rails 6 requires Ruby 2.5 or later (current stable is 2.7.1).  You’ll need to collect data about application code, test suite, gems, and dependencies. Planning an upgrade without interrupting performance of an app that’s currently in production is delicate, especially if app development will continue in parallel with an upgrade. 

Notch8 has built a business on Rails expertise for thirteen years, and we know even planning the roadmap to an upgrade is daunting. We offer Rails upgrade audits for $600, which provides an upgrade plan and highlights vulnerabilities. Our audit examines your code and dependent services, following a thorough process that:

  • Identifies any performance and scalability problems (load, memory leaks)
  • Identifies potential security risks
  • Evaluates database schema identifying any problems or deviations from the Rails conventions
  • Identifies problems migrating from earlier frameworks
  • Evaluates test coverage
  • Inspects dependent services, including databases and search services, and offers advice on upgrading those as needed
  • Provides feedback on coding style as it relates to “Rails Way” best practices
  • Checks the Github page for all gems to find out their compatibility with Rails 6.0

When the time comes, we’re also able to provide assistance in upgrading your app. If you decide to move forward with the upgrade, we will discount the price of the audit from the upgrade itself. Notch8 uses Docker to manage dependencies, and can also offer assistance in Dockerizing your application. Have questions or want to get started? We’ll be happy to set up a call!

Filed Under: Blog, Business Buzz, Coding Corner Tagged With: Rails, Ruby

Capabilities & Services

Notch8 has an experienced team of web developers distributed on the west coast of the U.S. available for:

  • Design, Planning, and Architecting
  • iOS and Android Development with React Native
  • Code Audits and Reviews
  • Ruby on Rails and Javascript Development
  • Full Stack Development
  • Samvera / Hyku Data Preservation Solutions
  • Framework Upgrades
  • Monitoring and Support
  • Deployment Optimization and Containerization
  • Team
  • Contact Us
  • © Notch8 2017, some rights reserved

Copyright © 2021 · Parallax Pro Theme on Genesis Framework · WordPress · Log in