Why You’ll Want to Use Elixir to Replatform Your Legacy Application

Have you heard about the latest weapon in the developer’s arsenal? It’s called Elixir, and it’s a dynamic functional language that operates on the Erlang virtual machine. It’s being used more and more by well-known brands like Pinterest, Bleacher Report, and Discord, who need a programming language that can handle high user volume, while also processing a huge number of requests. Despite it being a fairly new language, Elixir’s popularity is rising quickly, especially for those who want to replatform their aging applications. Here’s why it might be the right solution for your next replatforming effort.ScalabilityIn my recent ‘Tech in 2’ video about Elixir, I mentioned that one of its benefits was the scalability of the language. A solution like Elixir works well for a single programmer writing something that can handle a few users, but needs to scale up during certain times of year, for example, to handle a much larger userbase. However, it also works well for applications with consistently high traffic: a client of ours that utilizes Elixir regularly sees over a million users a day. It helps to process simultaneous requests quickly, without sacrificing performance, which means a great user experience for customers.Fault toleranceFault tolerance is another huge benefit of Elixir, compared to other programming languages. Errors happen; we know this ahead of time and Elixir makes it easy to design systems with failure in mind. A common phrase in the Elixir community is “let it crash,” because as developers, we can control how processes respond to failure in the appropriate way using Elixir.Parallelized task efficiencyDo you remember that famous scene in “I Love Lucy” where Lucy and Ethel are working at the chocolate factory, and the conveyer belt becomes overloaded with chocolates, forcing Lucy and Ethel to start eating them as quickly as they can? I’ve heard others compare that scene to the idea of an application’s job pipeline. The person at the beginning of the pipeline can handle an increasing overload fairly easily, but by the time it gets further down the line, you’re going to start seeing bottlenecks. With Elixir, you can spread the application’s various tasks apart without losing efficiency, due to its strength at handling parallelized tasks very quickly.It’s a fan favoriteAnother good reason to use Elixir? Developers love it. Online, you’ll find a growing community of Elixir enthusiasts like me who have embraced the language and never want to go back to a time without it. Combine the ease of learning Elixir with a helpful community who’s constantly sharing tips and tricks, and you’ve got a programming language that us developers are flocking to. Have you heard about the latest weapon in the developer’s arsenal? It’s called Elixir, and it’s a dynamic functional language that operates on the Erlang virtual machine. It’s being used more and more by well-known brands like Pinterest, Bleacher Report, and Discord, who need a programming language that can handle high user volume, while also processing a huge number of requests. Despite it being a fairly new language, Elixir’s popularity is rising quickly, especially for those who want to replatform their aging applications. Here’s why it might be the right solution for your next replatforming effort.ScalabilityIn my recent ‘Tech in 2’ video about Elixir, I mentioned that one of its benefits was the scalability of the language. A solution like Elixir works well for a single programmer writing something that can handle a few users, but needs to scale up during certain times of year, for example, to handle a much larger userbase. However, it also works well for applications with consistently high traffic: a client of ours that utilizes Elixir regularly sees over a million users a day. It helps to process simultaneous requests quickly, without sacrificing performance, which means a great user experience for customers.Fault toleranceFault tolerance is another huge benefit of Elixir, compared to other programming languages. Errors happen; we know this ahead of time and Elixir makes it easy to design systems with failure in mind. A common phrase in the Elixir community is “let it crash,” because as developers, we can control how processes respond to failure in the appropriate way using Elixir.Parallelized task efficiencyDo you remember that famous scene in “I Love Lucy” where Lucy and Ethel are working at the chocolate factory, and the conveyer belt becomes overloaded with chocolates, forcing Lucy and Ethel to start eating them as quickly as they can? I’ve heard others compare that scene to the idea of an application’s job pipeline. The person at the beginning of the pipeline can handle an increasing overload fairly easily, but by the time it gets further down the line, you’re going to start seeing bottlenecks. With Elixir, you can spread the application’s various tasks apart without losing efficiency, due to its strength at handling parallelized tasks very quickly.It’s a fan favoriteAnother good reason to use Elixir? Developers love it. Online, you’ll find a growing community of Elixir enthusiasts like me who have embraced the language and never want to go back to a time without it. Combine the ease of learning Elixir with a helpful community who’s constantly sharing tips and tricks, and you’ve got a programming language that us developers are flocking to. By using Elixir for your next replatforming effort, your application can take advantage of what’s arguably the most efficient and multi-tasking language available today. (Plus, you’ll have a very happy development team.) Learn more about Elixir by watching my Tech in 2 video here.  NEED HELP? LET'S TALK.About the author:Martin Tice has been a software developer for over seven years, and joined Rural Sourcing when our Albuquerque Development Center opened. He’s spent most of his career using different web development stacks, but has always had a passion for functional programming. Since then, he’s been trying to incorporate it into everything he uses. He caught the Elixir bug in 2018 and has enjoyed using it in his role at Rural Sourcing.

Five Practical Tips for Replatforming and Sunsetting of a Legacy Application

Replatforming can be a huge and somewhat intimidating undertaking, but it doesn’t have to be. By using a realistic timeline, creating a thorough project blueprint, and having a bit of flexibility, you’ll be reaping the benefits of your new application before you know it. Here are five practical tips for your replatforming efforts:Have a planDon’t laugh… it may seem obvious, but far too often, I’ve seen teams jump into a replatforming effort, and completely skip the planning phase. (I’ve done it myself, if I’m being honest.) It’s easy to fall into this trap in order to try and save some time. However, if we were to step back from the “ease” of the situation and assess the “why” of our goals, we’d quickly identify the inefficiencies, existing struggles, bad ideas, and bad practices that all lead to extra development time, which is most likely why we’re contemplating a replatforming to begin with. When we approach the replatforming effort with this mindset, it becomes crystal clear that we don’t know everything that we need inside and outside of our replatforming effort. I begin every replatforming by answering several key questions: 1. Why are we doing this, and what problems are we trying to solve? (The real reasons, not the industry buzzword reasons.) 2. What are my goals and desired results? 3. How will success be measured? 4. How will this effort impact existing users? 5. How will this impact existing dev team(s)? 6. How will we respect the business and existing user needs during this process?In other words, I know I’ll still have to get bug fixes and hot items to production in the legacy stack while managing the efforts of replatforming. Once my questions are answered, I approach the problem the same way I approach a brand-new set of requirements. After all, this project is just like any other that I’ve done before. There’s a start, there’s a destination, and my number one job is to formulate a complete plan so I can give my team the exact directions they need to get to our destination, with no wrong turns, no detours, and no roadside emergency calls to AAA.Manage scope creepI really enjoy legacy replatforming efforts, because I’m usually armed with user insight that I wouldn’t have if I were developing a brand-new product. Odds are, I’ve received an earful from users, developers, and the client alike regarding the pain points of the existing application. Because of this, I tend to know exactly what I’m getting myself into.There’s a catch, though. Once the project begins, the requirements are locked in – solid – with zero exceptions. This is the second largest trap I’ve seen so many teams fall into over the years (the first being overall lack of planning). We get a quarter of the way through, someone points out a pain point we didn’t know about – often because of poor planning – and we take it upon ourselves to remedy this pain point during the replatforming effort. First of all, had we planned accordingly, we’d already know about this pain point, and it’d be accounted for. Secondly, by taking on this initiative mid-flight, I’d be willing to bet this month’s paycheck that this “easy fix” wasn’t planned properly and will take two, three, or even four times as long as expected. Anytime you hear a developer say, “oh, that’ll be easy – sure, no problem,” don’t listen. We all know that person. I’ve been that guy. More than once. I have the t-shirt, and the scars. They don’t know the effort yet, so don’t trust them when they say, “it’s easy.” You’ll be let down more often than not. Scope creep will kill a replatforming effort quicker than video killed the radio star. Because we’ve planned accordingly (hint, hint), we’ve locked our requirements in, we know the plan, and we’re going to protect the plan – and say no to new requirements – until we’re done. I make my developers and stakeholders all agree to this upfront, and I remind them of this agreement every step of the way. This replatforming effort is going to net us the architecture we need to respond more quickly to business demands and add new features quicker with lower effort; we can worry about all the “wish list” items when we’re done. Do it in phasesPart of the planning process should include a clear strategy on how we can release our new, shiny efforts into production as we complete them. This means breaking down the project into chunks, and addressing any architectural needs and concerns that will allow both the legacy app and new app to coexist.  You don’t want to replatform in isolation, waiting until we’re “completely done” to release it all in one big ceremony. By releasing updates continuously everyone stays engaged, especially key stakeholders.This won’t be an easy task, but we as engineers are creative problem solvers – we make the seemingly impossible possible. It’s a big ask, but I’ve never met a situation where my team and I weren't able to find a way to make it happen. I’ve made React live with Angular, .NET play with Java, Python feed Ruby on Rails – you get the point. Where there’s a will, there’s a way – it just requires creativity.Learn from past mistakesWe’ve all heard the quote “insanity is repeating the same mistakes and expecting different results.” One could argue that the exact same thing could be said about replatforming. Remember back in our planning where we identified the “why” – why is this needed, why are we doing this, why is what we have currently not working for us? We need to clearly identify the pain points of our existing application and use these discoveries as an opportunity to grow from our past mistakes. These pain points, of course, stem from poor decisions, poor architecture, deep coupling, poor naming conventions, and other bad practices that might have crept into our existing code base. I’ve found, if nothing else, past decisions tell me what not to do this time around. To be clear, I’m more focused on developer experience here. If there are any low hanging user experience pain points I can remedy without affecting my effort or deliverable, sure, why not. But, my main focus is, and will always be, developer experience as part of this process. If I can use the replatforming to improve developer experience, new features get developed quicker, bugs get resolved faster, more code gets to production, and my team has more fun along the way. By taking inventory of the existing pain points in areas such as our current architecture and infrastructure, I have a clear starting point of all the roads I definitely don’t want to travel down. Examining the “why” behind each point will help to guide my decision-making process moving forward to ensure we choose the right technologies and solutions to the problems at hand.Don’t rush itI often meet with stakeholders who are hesitant to invest in replatforming because they have a hard time seeing the value in redeveloping something that is currently making money and “works just fine”. After all, they don’t know what it’s like to work in the legacy application day to day – they’re not the engineers, but once the engineering side of the house finally persuades the business side of the house to give permission for the replatforming, the stakeholders often concede by saying, “fine, but you have until [too short of a timeline] to get it done.” The project is already sunk before it’s started. Corners will be cut and poor decisions will be made, not on purpose, but because there won’t be plans in place to manage the needs of the existing product while replatforming in tandem, and your development team will end up overworked, burned out, and software entropy will start creeping in.When planning your replatforming engagement, stakeholders and engineers alike should be realistic about the timeframe, and leave time for the unknowns, surprise production bugs, proper tooling up of new technologies, and life in general. The best way to protect any project is to keep your developers engaged, and give them enough time to set the company up for success. Only then will they be able to deliver a codebase that will support the company for years to come, engineered with continual growth in mind. NEED HELP REPLATFORMING? LET'S TALKAbout the Author:Wes Dollar is a full-stack engineer with 21 years of experience in website & web-based software development. He has served as a business analyst & tech lead for clients ranging from startups to Fortune 500 companies. He has a passion for providing solutions to complex problems in a manner that is intuitive and easy for the end-user to use & understand. Most of his career has been spent on the open-stack side of the fence, where he has made many contributions to the Laravel (PHP) ecosystem. He is an HTML5/CSS3/JavaScript expert with strict compliance to W3C standards & 508 accessibility. He specializes in ecommerce & conversion rate optimization through UX design and also specializes in developing business systems, processes, and integrations.

Is Now the Time for Diversifying Your IT Outsourcing Portfolio?

COVID-19 and related actions have created huge disruptions not only to the economy, but also to the way in which IT services are delivered. Country-level lock downs have forced an almost universal work-from-home model upon the IT industry. Unfortunately, this de-facto standard creates the risk for huge service disruptions to companies around the world.Short term, companies across industries are scrambling to keep operations stable and prepare for the worst. Longer term this may have an impact on how companies here in the U.S. manage their IT outsourcing portfolio, perhaps opting for more in-house and in-country resources than what they've used over the last 10 years. COVID-19 has certainly provided a bit of a warning on the risk of putting all your eggs into one basket.Mitigating RiskYou can mitigate risks in a way a financial manager would – by diversifying.  Diversification has long been the rule for investment decisions, but many companies using outsourcing have tended to rely on a limited number of geographic regions and related IT providers. This is largely due to the availability of low-cost labor in these regions. In fact, more often the focus has been on the efficiency of the resource supply chain vs. its resiliency.So, what are the major considerations that companies should look at when re-evaluating their provider portfolio for diversification and risk mitigation? There is certainly a long list, but here are three key areas that rise to the top:Location RiskGiven the large amount of work that’s been shifted overseas, the term ‘outsourcing’ has almost become synonymous with ‘offshoring’. This is due to the availability of highly skilled, low cost labor in other countries outside of the U.S. With that lower labor cost comes areas of risk that need to be factored in for each location being considered:Infrastructure – this is more than just technology and communications infrastructure, which is critical.  It also includes healthcare infrastructure and local community infrastructure.  Weaknesses in any of these areas may inhibit performance, especially in times of crisis or natural disaster.Political/Economic stability – in recent years, there’s been an increase in terrorist activity, trade disputes and political tension around the globe. Locations should be evaluated for the potential risks in these areas. Security – depending on the country being considered, there can be differences in the rule of law that affects intellectual property protection, or the susceptibility of data breaches and loss.Agility and ResilienceThe COVID-19 pandemic has magnified the issue of needing to stay agile and operate with resilience.  Businesses should have an optimistic outlook, but be prepared for anything. In that vein, in addition to having the necessary technical skills and capabilities, providers need to show these characteristics:Contract flexibility – contracts by there nature are meant to protect mutual business interests, but that doesn’t mean they should be one-sided or ‘one size fits all’. The trend is toward shorter-term contracts, with flexible scope. Subscription or ‘as-a-service’ models – just as with software, the next framework for IT services is subscription based. This allows scaling up and down as the customer needs more volume, when the customer needs less volume, or when the customer has new needs.Business continuity and disaster recovery preparedness – it should go without saying that any provider, especially those with remote delivery capability, has a well-thought out and tested plan for business continuity and disaster recovery when something like COVID-19 happens again.Cost EffectivenessWith an economic downturn likely (hopefully a short one), cost containment will be even more critical.  Just as critical is the need to balance cost and risk. While labor is a major cost component for IT outsourcing, there are other hidden costs that need to be evaluated. Depending on the location of delivery, there can be significant costs associated with things like:Currency fluctuations Additional resources needed for offshore project management oversightVisa or travel restrictions and related resource availabilityTime delays due to time zone, language and cultureProviders need to be evaluated on not only hourly rates, but the other hidden costs or risk factors that may be inherent in their specific delivery models.Right now, and in the short term, companies need to do what’s necessary to ensure stable and profitable business operations. That means making whatever resource and process adjustments are needed, with minimum disruption. As the COVID-19 crisis begins to subside (which it will), it makes sense for companies to revisit their IT outsourcing strategy to better balance cost savings with risk mitigation. This means balancing the use of in-house employees, local contractors, on-shore delivery and offshore locations.Rural Sourcing is arguably the leader in onshore or domestic software development outsourcing.  This model strikes the right balance between cost savings and risk mitigation. With remote development centers exclusively located throughout the United States, Rural Sourcing leverages untapped, highly skilled technology talent in Middle America cities to provide world-class solutions to our clients. Our unique model eliminates the obstacles of time zones, distance, language and geopolitical risk.NEED HELP? LET'S TALK.About the AuthorAs Chief Client Officer for Rural Sourcing, Scott Monnig is responsible for one of our core values, ‘Change the Experience.’ He and his team are client-facing, colleague-centered and delivery-focused to ensure that our clients are delighted with our services. Scott works across our Sales, Sales Engineering and Delivery teams to ensure common practices and drive rigor that results in excellent outcomes.With 30+ years of hands-on technology leadership experience, Scott has led high-performing teams, technology groups, and business divisions through dozens of enterprise initiatives, systems development and digital innovation. He has also led organizational transformation initiatives with a recent focus around Agile, DevOps and Cloud transitions driven by rapidly growing digital demands across a number of industries and organizations.Scott is a graduate of the University of Missouri, where he earned a B.S. in Computer Science.

Cyberattacks Never Stop: Why Penetration Testing Should Always Be on Your Radar

Microsoft. Facebook. Capital One. These are just three out of the long list of corporate behemoths that have fallen victim to cyber security breaches in the last year alone. And now, with hackers actively targeting essential services providers, no one is truly safe. What can your organization do to avoid becoming a victim? The answer is simple: penetration testing.What is penetration testing?The National Cyber Security Center describes penetration testing as “A method for gaining assurance in the security of an IT system by attempting to breach some or all of that system’s security, using the same tools and techniques an adversary might.” A penetration test attempts to exploit any vulnerabilities in your system, and add context to what the risk is to your organization.There are five different types of penetration tests: white box (the hacker is provided with a small amount of information ahead of time regarding the security target), black box (also known as a blind test, where the hacker isn’t given any information ahead of time), internal (the hacker completes the test from within the organization’s network), external (the “attack” is carried out from a remote location to go up against the company’s external facing technology), and covert (a test where no one in the company knows that it’s happening). The types of tests your organization will need depends on the regulations you’re subject to, and the goals you have for the test.No matter what type of penetration testing your organization undertakes, below are my top five reasons why you need it sooner rather than later.1. To test the effectiveness of your security controlsPart of the process of establishing a formal information security program is using an industry recognized framework. The most popular frameworks are NIST 800-53, the NIST CSF, and the CIS Controls. As organizations adopt these controls and frameworks, it’s a good practice to have a penetration test performed to test effectiveness of the implemented controls.2. To test the effectiveness of your incident response teamA penetration test is a great way for organizations to test their incident response team’s ability to respond quickly and efficiently after a potential cyber emergency. This can be done by performing an unannounced penetration test to simulate an actual cyber incident, or by working with the team in what’s called a Purple Team engagement. Purple Team engagements involve the penetration testers working with the incident response team while walking through an actual attack to determine where improvements can be made.3. As part of a third-party attestation statement of your security programIn some cases, an organization will need to satisfy the requirements of a client or partner’s vendor management program. In cases like these, the partner or client may request proof that their network and systems are secure. A penetration test can be performed in order to provide that verification in what’s known as a third-party attestation statement.4. To ensure compliance with regulatory requirements and security frameworksCompanies subject to regulations such as PCI, GLBA HIPAA, and SOX are periodically audited to ensure they’re in compliance. In these situations, a third-party auditing firm will perform a penetration test based on the corresponding regulatory requirements. After the test is complete, a report is provided to the client, which may be requested by the regulatory governing body for review.5. To discover vulnerabilities in software or web applications that you’ve developed.Organizations that develop their own software or web applications should be performing penetration tests as part of the development process, and further down the road, too. This is especially true for web applications. Some organizations will have a penetration test performed when the application is first launched, but fail to test after further updates and configuration changes have been made. It's those subsequent updates and reconfigurations that often lead to a compromise of the application. If you’re using third party code, modules or plug-ins for a web application, you may not be making updates or configurations to your web application, but the providers of those third party solutions may be introducing vulnerabilities in their products that you’re completely unaware of. This is why regular penetration testing is so important for web applications.Penetration testing is one of the best ways to assess your company’s vulnerability to cyberattacks. By engaging in one of the five types of this crucial testing process, you’re able to protect your company from a potentially debilitating attack. The longer you wait to take this necessary precaution, the longer your system is susceptible. Contact us today to take the next step toward digital security.NEED HELP? LET'S TALK.About the Author:Joe Sullivan is a principal consultant at Rural Sourcing in Oklahoma City with over 20 years of experience in information security. He helps develop the company’s security consulting services and the teams that provide them. Over his career, Joe has worked in incident response, penetration testing, systems administration, network architecture, forensics, and is a private investigator specializing in computer crime investigations. Joe also teaches information security classes for the SANS Institute.

Rural Sourcing Colleagues Share Their Best Advice for Working Remotely

For many of us, working from home is the new normal, especially for those in the tech world. While some are pros at working remotely, others are still getting used to their new workspace complete with new seating arrangements, new “coworkers” and new distractions. That’s why Rural Sourcing colleagues put their heads together to assemble some advice for adjusting to a work from home lifestyle. Below are their top tips.Create a workable desk environmentSitting on the couch, in the recliner, or at the kitchen bar sounds appealing, but isn't a suitable long-term work area. When you work for long periods of time in/on furniture that isn't designed for that kind of use, it starts to take a physical toll on you. It also limits your ability to use accessories that you normally use at your work desk, such as multiple monitors and a separate keyboard and mouse. Even if you don’t have a home office, ensure that your makeshift one has accessibility to everything you need to be efficient.    Take periodic physical breaksWithout colleagues in the office to interact with, it’s tempting to just sit at your desk all day. However, this won’t do your body any favors. Go outside and walk the dog, or spend a few minutes drawing with sidewalk chalk with the kids. Everyone in your house (pets included) will benefit.Have a quiet place for customer callsAt this point, customers are generally aware that most people are working remotely (and chances are, they are too), but too many barking dogs or crying children become a real distraction for working calls. If it’s not possible to find a quiet space in your house, the “branch office” (aka your car) can work in a pinch.Stay connected, creativelyBeing physically distanced from your coworkers doesn’t mean you can’t keep up the same camaraderie you’ve always had. A few unique ways our colleagues have managed to stay connected are by going on virtual walks together, Zoom ‘happy hours’, and taking each other on video tours of their homes. When all else fails, unplugA 2019 study found that the biggest struggle people had with working remotely was being able to unplug. Long days are necessary sometimes, but working extra hours over an extended period of time will leave most people feeling burned out, and unable to do their best work. It’s important to know when to unplug at the end of the day. With so much uncertainty surrounding how long this “new normal” will last, make sure you’re looking out for your well-being in the long-term, not the short-term.Figuring out the best remote work environment for you (and your family) will probably take some time. However, by utilizing these tips, you’ll be able to stay productive and connected as everyone adjusts to life working from home.NEED HELP? LET'S TALK.

Three Reasons the U.S. is Built for Remote Success

We’re in what may be a ‘new normal’. COVID-19 has forced businesses around the globe, that are able, to adopt remote work policies for their employees. For many companies, this is uncharted territory.In the U.S. tech industry, remote work isn’t a stretch. Companies have been experimenting with the idea for quite some time with increasing levels of success. But to be successful in a remote working environment, there are certain critical infrastructure and cultural points that must be met. As a result, the U.S. geography is well positioned to succeed in a remote work environment.InfrastructureThe U.S. has great infrastructure. From reliable power grids to fast internet, and soon to be faster with 5G, we are leading in many areas that are critical for success in a modern work environment.Internet speeds and availability are two of the key points that demonstrate America’s strong position. According to data, U.S. broadband speeds are some of the fastest in the world. Beyond speed, there is nearly ubiquitous access to high-speed internet, which showcases an infrastructure that can handle the shifting workforce needs.In many popular offshore areas, data and development centers have dedicated broadband pipelines, but during a crisis when a center must close, there are limited options to maintain operations. Quite simply, there is not enough infrastructure to support a remote working environment at scale.The U.S. has the infrastructure to be successful, meet customer needs and innovate.Distribution of WorkforceIn the U.S. there is tech talent throughout the country. That means you can find technology professionals from the East to the West Coast and all the “flyover states” in between. Just look at Rural Sourcing. We have six software development centers in Middle America—outside of the traditional tech hubs.Our talent isn’t clustered in massive centers. We’ve found that having smaller centers, maxing out at 150 colleagues, is the ideal size to promote collaboration, innovation, and culture. We have talent spread out across the country, allowing us to provide a stable, high-quality, and committed workforce. That means less risk and better results.Smaller Learning CurveRemote work is nothing new for the U.S. A Gallup study finds that 43% of U.S. employees work remotely some or all of the time. Culturally, we have embraced the model for a number of years. Not at this scale, but the learning curve is small for a remote work culture.Beyond the volume of people already working remotely, numerous studies have shown that remote workers are more productive and profitable than in-house employees. The workforce is there and able to meet customer needs.Whether the remote work is a temporary or permanent fixture of our economic landscape, the onshore development model is well positioned to thrive. We are ready and able to get the job done—on time, on budget and in your backyard.NEED HELP? LET'S TALK.

Five Ways For an Easier Transition to AWS

While living in the Cloud has become the new normal for many companies, there are still plenty out there that have yet to make the move. It’s a huge effort for your development team, with a lot of room for error. That’s why I’ve assembled these five crucial steps to help you work through a successful AWS implementation. Even if you’re not involved in setting up the architecture, this guide will help you gain a much deeper understanding of AWS functions. Create a plan, but be willing to pivotFail to plan and you plan to fail, right? No successful AWS implementation happens without a solid plan in place, but remember that things do (and will) come up: third party dependency problems, requirements changes, even service outages. When you’re getting started, some important questions to ask include “what are the application’s goals?”, “what kind of traffic will it have?”, “how is the app going to be built?”, and “where will your team be located?”. Perform Infrastructure as Code to avoid the human error element that comes with doing things manually. And anticipate failure and have a procedure in place to respond, be it disaster recovery or remediation documentation.Make security a top priority These days, large corporate security breaches are pretty much guaranteed to make the news. So, keep your company happy (and off of CNN) by making sure your AWS implementation is secure. To start, use AWS Identity and Access Management (IAM) to create a security identity. If you don’t have one in place, it’s hard to get everyone on your team to do their part. And when everybody isn’t doing their part, gaps can get overlooked. You’ll also want to prepare for security events ahead of time. For example, if an unknown user or strange traffic pattern arises, do you want an automated or human response? Or both? The sooner you get your eyes on a security problem, the sooner you can get it solved and potentially lessen severity.Manage costs... ahead of timeKeeping your costs in check is an important part of the implementation process. Over provisioning of resources is all too common, as well as the unexpected costs in transferring data in and out of the Cloud. If your need for resources fluctuates throughout the year, a consumption model can help. By adopting this type of operating model, you utilize auto-scaling and only pay for the resources that are required. Just be careful, though. With the benefits of auto-scaling come a few drawbacks: if only the application scales up, the infrastructure that supports it could potentially become a bottleneck, and cause delays or timeouts; or if the database isn’t scaling at the same rate as the web application, this could cause connection issues while the read/write operations struggle to keep up.Ensure reliabilitySure, the AWS SLA is reliable, but what can happen in the procedures that take place between you and AWS? Network problems, power loss… you’ll want to test your recovery procedures in advance so you can automatically recover from any failures in the future. Another way to ensure reliability is to stop guessing capacity. I’ve heard time and time again from clients that “it’ll never be more than x amount,” and then sure enough, it ends up over the estimate. Now you’ve been impacted, whether that’s the extra amount of time spent, or a dollar amount lost. If you’re on a consumption model with auto-scaling, it just gets done.Optimize overall performanceRather than having your team learn how to host and run a new technology, that technology can be consumed as a service. For example, NoSQL databases, media transcoding, and machine learning require expertise that isn’t always available on every team. AWS has services that can be consumed while the team continues to focus on product development and business value, instead of trying to master something new. Another way to optimize site performance is by using serverless architectures: they’re easy to deploy, low cost, scalable, and allow for continuous improvement. Finally, be sure to use some “mechanical sympathy.” That means understand and deploy technology that best aligns with what you’re trying to achieve. For example, consider data access patterns when selecting database or storage approaches. You don’t want to choose completely opposing technologies for your stack.AWS implementation can be a big undertaking, but with the right team in place and a well-thought-out strategy, transitioning to the Cloud is easier than you think. Learn more about how Rural Sourcing has helped clients implement AWS for their organizations by visiting our Results page.LEARN MORE ABOUT OUR AWS CAPABILITIES

The Best Places to Work in Tech

Silicon Valley. New York City. San Francisco. Read any of the countless articles about where to find the best tech jobs, and it’s more than likely that cities like these will be at the very top. With endless entertainment, dining, and cultural opportunities, it’s no wonder that so many people choose to live in these areas. But with a large number of amenities, comes a big drawback: a very high cost of living. That’s why I’d like to make the case that our six development center communities have just as much to offer as their larger counterparts, at a much lower cost for our colleagues. Take a look at my list for the best places to work in tech.Jonesboro, ArkansasOur very first development center is located almost smack dab in the center of Middle America. Home to Arkansas State University, Jonesboro has housing that’s an enviable 26% lower than the national average. It’s also a city full of natural beauty, with Craighead Forest Park and Crowley’s Ridge Nature Center providing ample opportunities for exploring the great outdoors. Augusta, GeorgiaWhile most people know Augusta as the city of the Masters golf tournament, to us, it’s home to over 120 of our colleagues. Located on the Savannah River, the city has tons of history, and was even the state capital at one time. A recent exciting addition to Augusta’s economy is a number of film and TV productions taking place, thanks to the filming tax credits offered by the State of Georgia.Mobile, AlabamaSan Francisco and New York City aren’t the only tech hubs located on the ocean! You’ll find Mobile right on Alabama’s beautiful Gulf Coast. The city has a booming culinary scene, with Dauphin Street (Mobile’s answer to New Orleans’s Frenchman Street) and its many restaurants and bars. Looking for a family-friendly Mardi Gras experience? You’ll definitely want to visit Mobile during their annual celebration, which is the oldest in the U.S.Albuquerque, New MexicoHow does an average of 310 sunny days a year sound to you? In Albuquerque, great weather and lots of natural beauty make it a city you’ll want to get out and explore. Home to the Sandia Mountains, which offer breathtaking views and skiing opportunities, Albuquerque also has myriad art galleries, and hosts the country’s largest balloon festival.Oklahoma City, OklahomaOklahoma City has gone through an incredible transformation over the past 10 years, especially downtown, with additions including the Devon Energy Center, a 50-story office building; The Jones Assembly, a restaurant, bar and live music venue; and Scissortail Park, which hosts farmer’s markets, concerts, and is the home of the USRowing National High Performance Center, a U.S. Olympic and Paralympic Training Site. With a cost of living that’s 15% below the national average, OKC offers our employees a great value.  Fort Wayne, IndianaIn this city of over 250,000 people, endless entertainment options is just one of the reasons we decided to call Fort Wayne home to our newest development center. Lots of unique festivals, including the annual BuskerFest dedicated to street performers, and a thriving arts scene mean there’s no shortage of things for you and your family to do. In fact, SmartAsset.com named it the #1 place to raise a family in the United States.Beyond the many amenities offered by our development center cities, our one-of-a-kind culture provides opportunities for you to cultivate a rewarding career in tech. With challenging and exciting projects in a highly collaborative and supportive environment, Rural Sourcing is committed to creating high-quality jobs throughout Middle America.Looking for your next tech role in one of these fantastic cities? Check out our careers page to learn more about what’s waiting for you at Rural Sourcing.