Do’s and Don’ts when Migrating to the Cloud
From both a business and an IT perspective, migrating to the cloud is the right move for almost every organization. But it is not something you can do on a lazy Sunday afternoon: it takes thorough preparation and communication and, most importantly, a cloud migration needs to be closely connected to your business strategy. We have listed a few do’s and don’ts as an infographic that will help you get started. Do’s and Don’t when Migrating to the Cloud Do’s Share your roadmap Check certifications and compliance statements Look for a partner who can scale quickly Train your people before, during, and after Consider changes in architecture Don’ts Don’t forget your current investments Don’t plan a ‘big bang’ migration, but take a phased approach Don’t simply look at the quoted price, but calculate the complete TCO Don’t go at it alone Don’t forget the human factor Need help with Cloud?Reach us at mktg@inapp.com or Contact us
Amazon’s AWS and Microsoft’s Azure
Amazon’s AWS and Microsoft’s Azure are the big boys of the cloud computing world, even though AWS is much bigger than Azure. How much bigger? Well, AWS’s server capacity is about 6 times larger than the next 12 competitors combined. The cloud-hosting industry operates on razor-thin margins, making the bulk of its profits from volume. It is thus imperative to capture as much market share as possible. One of the main ways the tech giants (Amazon, Microsoft, Google) achieve this is by regular price cuts of their offerings, especially the all-important compute-storage combo. Here’s a first-hand look into the major factors differentiating the cloud providers Amazon Web Services and Microsoft Azure. Need help with Cloud? Reach us at mktg@inapp.com or Contact us
CAPEX Vs OPEX of the Cloud and other Financial Benefits

The cloud is the buzzword revolutionizing software and IT infrastructure the world over. Companies globally are leveraging the cutting-edge benefit of the cloud to get what works best for their IT network, Software & Apps. Cloud computing service cost is computed as OPEX and the purchase of a unit of a server as CAPEX. Let us try and analyze the cost-benefit of cloud-based technology beyond CAPEX Vs OPEX and look at other financial cost benefits. Cost-benefit calculation: A piece of equipment purchased can serve its intended purpose for up to 36 months before it is made obsolete. If you consider only this for an ROI calculation, the cost of running an instance of Azure/Amazon 24 X7 is much more expensive than purchasing a single unit of the server with a similar configuration. For organizations heavily dependent on IT, the calculation is flawed. The indirect (network and storage infrastructure and IT operations to manage the general infrastructure) and direct cost (Power, floor space, etc of running a server is completely ignored in this calculation. When all these costs are added, the overall cost of renting cloud space works cheaper than purchasing a server. A cloud instance purchase considered OPEX is much cheaper than a CAPEX on a server purchase. Upsize & Downsize on the go: A variable OPEX is no financially prudent way of running operations. This is true if the nature of your operations is “set and forget”. The “set and forget” model holds rarely true for an organization with IT as the core of its business. Cloud instance offers scalability and allows for a ramp-up and ramp-down based on seasonal spikes and usage patterns. This flexibility allows for payment to be made for what you use. You will no longer be bogged down by excess hardware or the lack of it. The implied benefit of this is that you pay lower OPEX for maintaining the cloud during lean seasons. When a user is finished with the resources, it is returned back to the provider. The utilization responsibility rests with the provider and he has to figure out how to make sufficient use of the resources. Lesser Financial Liability: The only thing that frees a user from making a significant long-term investment is the ability to start off small. Cloud solutions being scalable can be started out as small and can be scaled up hence, financially valuable. The short-term premium paid for cloud services is less expensive than a higher rate for a shorter period for a server purchase. Automation Saves: In today’s world, organizations across the globe are realizing the benefit of automation. Tools and automation in cloud services offer facilities for resource termination and instantiation. The biggest advantage of automating is the ability to optimize resource usage based on demand and usage. The load and usage pattern help the automation tools to determine how many instances or resources to be up and running at any given period of time. Advances made in these tools offer autonomous management of these processes with limited or no manual intervention. An environment like this incurs smaller transaction costs making “down and off” more viable. The above is clear evidence of the cost-benefit of cloud instances over a conventional server. Financial benefits are one of the biggest reasons for the exponential cloud adoption rate among organizations in the recent past and will also drive the future of cloud computing. Need help with Cloud? Reach us at mktg@inapp.com or Contact us
Top 44 Questions To Ask Through Your Cloud Journey

The entire process of Cloud migration may be split into 4 stages namely; Assessment, Planning, Migration & Validation. One might have a lot of questions or doubts about the Cloud or the migration journey. Here are the top 44 questions you should ask yourself in the Cloud Journey: Cloud Migration Assessment Questionnaire Is the cloud right for your application (Application Migration Assessment) What are your capacity demands? How to find out the best cloud model for you? What are the actual ‘Actual Costs’? Analyzing your internal processes and evaluating business needs before migration? How important is knowing your cloud provider? How to prepare for cloud migration? What about cost Consideration? Technical considerations for migrating to the cloud? Where are the “gaps” and are they still gaps after migration? What’s the fit for your existing tools? What is your overview of different cloud providers? ROI? Cloud Migration Planning Questionnaire What are your migration strategy and plan? What are the candidate apps/workloads/environments? What are your considerations for choosing a cloud provider? What’s the topology of the application architecture? How to avoid cloud migration risks and hurdles? What are the possible performance bottlenecks being introduced? What are the hybrid integration plans? Have you identified the first adopters? What are the Dos and Don’ts of cloud migration? Explore the cloud tools to help the migration process. How will users access the environment? How will you train staff? What internal processes have to change in order to capitalize on the new service? How will you deploy updated code, data, and configurations to the environment? What’s the plan for operating this service after migration? Do you have a strategy for cutover? What are the things to keep in mind when you test-run your migration? How will financial processing occur? Have you completed a small-scale pilot that flexes all the above concerns? Cloud Migration Questionnaire How are you distributing the apps and data to the cloud environment? What are the security controls in place during transit? What is the Cloud-to-Cloud migration and its challenges? How do you migrate virtual machines? How do you migrate data? How do you migrate applications? Cloud Migration Validation Questionnaire Is the application reachable? Did all the data make its way into the environment? Can administrative tools access the cloud environment? Is the application stable? Will scalability affect the core architecture of the application? Do you have a business continuity or backup plan? If you have answers to all these, your migration should be smooth as cheese! Need help with Cloud? Reach us at mktg@inapp.com or Contact us
Microservices for Next-Gen Cloud Apps
About Speaker: Mr. Anil Saraswathy is the CTO of InApp. He has over 3 decades of experience in the field of computer software development. He has held leadership positions at Fischer International, HCL (Hindustan Computers Ltd), IESL (now India Satcom Ltd), and Verifone (now part of HP). He has done path-breaking work in Cloud Computing, Microservices, Custom Application Development, Enterprise application development, etc. He is also an avid programmer in Python, Ruby on Rails, Java, C++, PHP, and JavaScript. Topic: In this video, Anil explains the problems with present-day Monolithic, on-premise applications. He then describes the Microservices architecture as a solution to this problem. He goes on to explain how Microservices combine with Cloud Computing to produce robust, agile, and economical applications using Netflix as an example.
The latest in AWS, CodeBuild

As an enthusiast of cloud and cloud-related technologies, I keep track of conferences and symposiums in this domain. AWS re: Invent is the most significant event in this regard by Amazon (Amazon Web Services) The main event was held in Las Vegas from Nov 29 to Dec 2, 2016. The event is also educational as it showcases the latest updates and trends in AWS with keynote announcements. I was unable to be a part of the event, but I followed the updates happening over Twitter, FB, Youtube, and various other blogs. Of the many new updates that were presented this year, CodeBuild Service caught my attention. In simple terms, the service automatically compiles lines of code written by the developers and runs test cases on it. The service has the ability to run on lesser popular languages through a docker image. CodeBuild works seamlessly with CodeCommit, CodePipeline, and CodeDeploy i.e. other AWS tools for storing, building, and deploying code. The combined set of the above assists the developer in every stage of code development, deployment, and code updates. In tune with the principle of cloud computing, the service is scalable and has the ability for automatic resource termination and instantiation, contrary to the “set and forget” model. The service is charged by the minute. Codebuild currently works on Linux. Looking forward to Windows support in the future. Jordan Novet and Jeff Barr, your articles have been a big inspiration for me to have an up-close look at CodeBuild. I plan to work/experiment with the tool and shall post updates in the upcoming articles.
5 Key Points to Successful Mobile App Testing

Mobile app testing is a completely different beast when compared with web application testing. The challenge of testing the mobile app across multiple mobile devices, each of which might be of different screen sizes and might be using a different operating system, and on top of all; mobility-related issues (ex. N/W, internet speed, etc) make mobile app testing tough. Challenges of Mobile App testing: 1. N/W connectivity: There are hundreds of mobile operators globally. Even the technology used by these operators is not uniform. Some operators use CDMA, some use GSM, etc. Mobile app testing has to verify the functioning of the mobile app across these operators and technologies. 2. Mobile OS: In general, it is difficult for the same mobile app to run on a mobile OS. Thus mobile apps are of different types: Native, Hybrid, Cross-platform, the web, etc. Mobile app testing has to ensure all versions of the app across the operating environments work without any glitches. 3. Mobile Devices: There is a flood of mobile devices in the market. Thousands of manufacturers across the world and each manufacturer have many device models. Mobile app testing becomes a huge challenge in such an environment. These are just a few of the unique challenges in Mobile App testing. In order to overcome these challenges and make mobile app testing a success we should take care of the following 5 points: 5 Key Points to Successful Mobile App Testing 1. Do mobile app testing on the cloud The cloud creates a mobile environment online on a simulator. This allows for a huge number of scenarios to be tested. Any other way of testing would have a limit on the number of scenarios that can be tested. The cloud is able to create various operating environments virtually. The mobile app can then be installed in these environments and testing can be performed. The cloud also provides an unlimited (scalable) amount of space for storing testing data. Most companies struggle because it is financially unfeasible to arrange for all the operating environments, devices, etc to be arranged physically. The cost of setting up such a lab is simply too huge. With the cloud, you can get operating environments on demand. 2. Choose a combination of Physical Devices & Emulators for Mobile app testing As was briefly discussed in the earlier point, physically arranging all the devices is a huge cost. But the alternative of only using emulators is also not practical. Emulators are not always available for all devices. So what is the solution to this conundrum? Let’s first understand what an emulator is. An emulator is software that allows for different environments to be created for the mobile app to be tested. There are many types of emulators: 1. Device emulator: The device manufacturers generally provide their own emulators. This is beneficial from their perspective. Device manufacturers generally want their devices to support most mobile apps. 2. Browser emulator: We also have browser emulators. The purpose of browser emulators is to create browsers virtually for mobile app testing. 3. Operating system emulators: There are many operating systems for mobiles. Amongst the various operating systems, the most popular ones are Android, iOS, and Windows. There are emulators which mock the operating systems. Though there is a wide variety of emulators available. It is just not possible to create all the combinations of real-world scenarios on an emulator. Many OEMs, for example, bring in part of their own software to the operating system. The operating system might be Android or iOS, but because this system has a combination of code from the OEM it may not be possible for the emulator to re-create this situation. Similarly, N/W conditions in the real world are so worried that it is again impossible to re-create them via an emulator. Hence it is suggested to have a combination of emulators and physical devices for mobile app testing. Emulators are especially very useful in the initial stages of the development of a mobile app. This proves very useful for software developers. Physical devices should be brought in at the later stages of development. 3. Develop special mobile-centric test cases The test cases that are to be developed for testing mobile apps should be specific to the mobile environment. Let me show some such situations that will likely happen only in a mobile environment: 1. Mobile handing off from one network to another: it can very easily happen that the mobile moves from the coverage area of a particular switching station to another. In this situation, it would be a change in connectivity or a temporary loss of connectivity. Mobile applications should be robust enough to handle such a situation. 2. Mobile running low on battery: Mobile phone (especially today’s smartphones) uses a lot of battery. It should not happen that mobile app contributes to battery usage disproportionately. Research has shown for example that the Facebook app uses a lot of battery. 3. The memory is running very low: The mobile phone has a much smaller storage space and it is common for the memory to be very close to being utilized. The mobile app should ideally be able to handle a scenario in which it doesn’t have enough memory space. These are just some of the mobile-centric scenarios. While doing mobile app testing is it paramount that all the mobile-centric scenarios be included as part of mobile app testing? 4. Automate your mobile app testing: The benefits of automation testing are numerous. Ideally, all repeated test cases should be automated and only new ones should be tested manually the first time. Automation saves precious tester time which can be then utilized to increase the test coverage. It also reduces the dependency on human resources. Also, human error can be reduced by automation, leading to a more robust system. 5. Test the performance of your Mobile App: The mobile is a compact device. Also, mobile usage is very high compared to a personal computer or a laptop and
Cross-platform mobile app development – Truth vs Hype

Let me relate to your conversation which I was recently having with a client on Mobile app development. This same conversation repeats each time there is a discussion on Mobile app development. It relates to the type of mobile application that should be developed. There are 2 completely distinct types of Mobile applications: Native & Cross-Platform. Between these 2 distinct types are some intermediate types of applications: Hybrid & Web. In fact, Web apps may not actually be mobile apps in the traditional sense. Given a choice, IT decision-makers (I mean people who are responsible for the P&L statement and not technology enthusiasts) would always go for cross-platform mobile app development. The benefit is obvious, the same app works on all platforms and hence the effort in developing the app is a 1-time effort. Instead, if native apps have to be developed the same effort is to be repeated for each of the platforms. Why go for Cross-Platform Mobile App Development? So our conversation with clients (which are general with IT decision-makers), always starts with the client asking us, “What is the type of application you are suggesting for us?” Now no technology expert worth his salt will ever suggest a cross-platform mobile development over a Native app development. The native app performance will always outclass the cross-platform app (we will go into the reasons a little later). So that means businesses have to shell out that much extra in order to get more performance out of their mobile apps. And that extra would double, triple, quadruple, etc, depending on the number of platforms for which the app has to be developed. A workaround, to control the ballooning application development cost is the option of Hybrid apps. With “Hybrid apps” we can reuse up to 80% of the mobile application’s code. But again one cannot expect the performance to match that of a Native app. In order to explain this situation to our clients we generally show them the below graph, which summarizes the situation described above: Let us now clearly understand the different types of mobile apps: Native Apps: A native mobile app is developed specifically for its operating environment. The operating environment is the mobile platform (iOS or Android). Generally, these apps are developed using Java for Android and “objective – c” / Xcode for iOS. The main advantage of Native apps is their ability to integrate with the device’s hardware and software. This, of course, is on account of the apps being native. Because the mobile app is so integrated with your mobile system, it is able to unlock the full functionality of both the mobile’s hardware and its system-level software. Advanced user interfaces can be built on native apps which would allow double-tap, pinch-spread, etc. The screen itself can be very dynamic with Native apps, with lots of data flowing through it and getting frequently updated as well. The hardware components, in particular, come to life on Native Apps (camera, geolocation, etc). Hybrid: The hybrid app is defined by different people in different ways. In order to understand Hybrid apps we need to first explain HTML 5 or web apps. Web apps are essentially apps running on the mobile browser. Because they are running on the mobile browser, these apps are device-independent and platform-independent. They are in fact not apps in the traditional sense of the word because you won’t find these apps on the Android or Apple app stores nor do you need to install these apps on your phone. Development technology for HTML 5 apps is essentially the same as for desktop web applications. They are therefore easier to develop. They are also much easier to test given that you need not test multiple different versions. But the ease of development and testing doesn’t mean web apps are the panacea. Web apps still are unable to provide a great GUI experience. For example, multiple touches on the same screen simultaneously are not possible. The full power of the hardware cannot be unlocked. Another huge disadvantage is that web apps cannot work offline. A significant amount of data cannot be cached on the system for the app to be able to work offline. As a result of this security is also a huge headache for mobile app users. In general, using the generic cache to store user credentials (as is done for a web app) is an insecure way of dealing with important data. The workaround is to ask for login credentials each time the app is launched from the mobile and even in those cases where the app has just been sent to the background temporarily. Now that web apps are clearly understood we can move to hybrid apps. Hybrid apps essentially combine the features of Native and Web apps to provide an intermediate solution that is in – between a Native application and a Cross-platform application. Hybrid applications work on all platforms but with better performance than a web app even though they are developed using the same HTML 5 or JavaScript technology, because of the wrapper encapsulating them. This wrapper interfaces with the HTML 5 code and system-level code in the mobile. It essentially does away with the requirement for mobile apps to run on mobile browsers. PhoneGap also known as Cordova is a popular wrapper container. With a hybrid app, we can develop apps that can run on different platforms while not compromising performance. We can achieve close to 80% of reusable code with a Hybrid app and thus significantly bring down the cost when compared with Native apps. Cross-Platform mobile apps: Though many people regard Web and hybrid apps to be cross-platform. We think such a classification does injustice to apps developed using Xamarin, which are actually in the true sense of cross-platform mobile app development. Unlike Web apps, these apps are actually apps in the traditional sense and can be downloaded from app stores and can run offline. Also unlike Hybrid apps close to 100% of the code
7 Cloud Computing Security Concerns

Cloud computing security is probably the most important area of concern for most businesses that are evaluating a cloud computing strategy for themselves. “The Cloud” essentially provides the option of storing and processing data on a device that is externally located and may or may not be shared. The extent to which the processing & storage is being shared determines the cloud deployment model: Public, Private & Hybrid. However, in the purest sense cloud is a shared & external location for the storage and processing of data. Now because the data is externally located and also shared, naturally means that the risk profile of the data has increased. But the increase in risk profile doesn’t mean that cloud computing is unsecure. In fact, given that most cloud computing service providers recognize the security risks of the cloud, they try to put in place time and effort to make their service offerings completely secure. Because of this concerted effort in this direction, it may actually be the case that your data may be more secure on a cloud server rather than on your office premise. So it goes without saying that all service providers are making effort in making their cloud secure. But it also remains a fact that cloud computing increases the risk profile of your data and as such all businesses should recognize these concerns and try and evaluate their cloud provider on their ability to address these concerns. With this blog, we attempt to explain “Gartner’s 7 cloud computing security concerns” and also prompt the questions that should be posted to cloud service providers in order to evaluate their security: Gartner’s 7 cloud computing security concerns 1. Privileged user access The cloud takes your data physically away from you. You are no longer the custodian of your data. The custody of your data now is with the administrator appointed by your cloud service provider. It is this person or set of individuals who needs to be scrutinized before you trust your data with them. It is therefore essential to ask your cloud service provider for information on the people who will administer the cloud. There should be a mechanism by which these individuals are screened, evaluated, and appointed. Any service provider who is not upfront about its recruitment process and employee profile cannot be trusted with your data. 2. Regulatory compliance There are external auditors who scrutinize the cloud computing security measures of any cloud service provider. They are an independent source of information on the cloud’s security. Any service provider you are considering should be willing to go through such audits. In cases the audit has already been done, you should request for the audit report to be shared by the cloud service provider. In fact, cloud service providers should willingly participate in audits. The audit can showcase and certify the cloud’s security. 3. Data location Location is important from the legal jurisdiction standpoint. With the cloud, the data can be physically located anywhere. It depends on where the service provider is having its data center. Let’s suppose the data center is located in a place where the legal system is lax. In such a situation the cloud service provider can escape prosecution, in case it is complicit in knowingly or unknowingly compromising the security of your data. To avoid such a situation you should request your service provider to keep your data in a location that you are comfortable with and also execute proper agreements with your service provider which will force it to abide by the rules & regulations in the location. 4. Data segregation The cloud in its purest form (public cloud) is shared between organizations. There are ways in which the data can be segregated from each other. It is important to know the ways the service provider is ensuring the data is segregated. Encryption is one such way. However incorrect encryption can almost make the whole data set unusable. 5. Recovery Generally, cloud service providers replicate the data on at least a couple of locations. This is a way to ensure that the data can be recovered from a separate location due to any accidental loss. Any service provider who doesn’t back up the data is an immediate red flag. You should, therefore, request your service providers for information on the places where your data is getting backed up. If in case your data is not getting backed up, you should discontinue working with that service provider immediately. 6. Investigative support There are various ways in which data security can be insured on the cloud. You can do deterrent control by warning users of the consequences of stealing your data. The largest subset of deterrents is preventive control, like with the point we discussed on screening administrators. Then there is detective control by using techniques to monitor intrusion attempts. Finally is the question of corrective control, for which you need investigative support. Once you have suffered any data breach, investigative support enables you to find out the problem and limit its loss or prevent it from happening again. Your cloud service provider should ideally be under contractual obligation to co-operate in any investigation as and when required by you. 7. Long-term viability You should also spend the time to investigate the market and financial standing of your service provider. It should not be such that the provider is a newbie in the market with nothing to lose. If such a provider sees a sustained cycle of financial distress it is likely to fold and leave you high & dry. Also, the service provider should have deep pockets to withstand a sustained period of stress. Need help with Cloud? Reach us at mktg@inapp.com or Contact us
Mobile Test Automation Tools

Mobile users around the globe have increased exponentially. As per studies, it’s going to be much higher in the coming years, this means that people are going to use internet services from basic internet surfing to banking, shopping, etc from their mobile devices and we all can agree that even without any study because we all must have felt that trend in recent times. As part of this trend, every company is now looking toward developing its own mobile applications. 1000’s applications are released every month and what makes an app stand out is its quality, and when we talk about quality, ‘Testing’ plays an important role in making an ordinary application a high-quality user-friendly one, and choosing the right mobile test automation tools can be a challenge. Testing is not an easy job either, it is a complex, resource-intensive, and time-consuming one. This is why choosing the right testing tool is of at most importance. Through this blog, we are trying to help you with the decision-making process of choosing the right Mobile Test Automation Tools. Mobile Test Automation Tools Mobile devices are less accessible and less open than standard desktop environments or web-based applications and this makes automation a bit challenging. Appium Appium is an open-source project for test automation. It’s a native, mobile web, and hybrid application on iOS and Android platforms. It supports native, hybrid, and web apps. More Information: Appium SeeTest It’s a cross-platform solution, the same script runs on different devices. Facilitates test to run on several devices concurrently. It records on real devices. It supports Android, iOS, Blackberry, Windows Phone 9, and Symbian. More Information: SeeTest UFT UFT (Unified Functional Testing) software. UFT provides functional and regression test automation for software applications and environments. UFT is primarily used for regression, service, and functional testing. UFT can be used for enterprise quality assurance. It supports keyword and scripting interfaces. It also features a graphical user interface. TestComplete TestComplete is a functional automated testing platform developed by SmartBear Software. Tests can be scripted, recorded, or manually created with keyword-driven operations and used for automated playback and error logging. It can be used to create and automate many different software test types. It supports Web, Android (operating system), Microsoft Windows, and iOS applications. More Information: TestComplete Robotium Robotium is an open-source tool for Android UI testing. It’s used mainly for automated black-box UI tests for Android applications. It supports web, native, or hybrid mobile applications. Calabash Calabash works well with Ruby, Java, .NET, Flex, and many other programming languages. Calabash is an automated acceptance testing framework. It supports native and hybrid mobile apps. iOS-driver iOS Driver utilizes Selenium and the WebDriver API for testing iOS mobile apps. It is designed to run as a Selenium grid node, which improves test speed as it enables parallel GUI testing. It supports all IOS native, hybrid, or mobile web applications. Selendroid Selendroid doesn’t require any app-code modifications. Tests are written using the Selenium 2 client API. It supports Android native, mobile web, and hybrid applications. Frank It’s an iOS-only test framework combining Cucumber and JSON. It also includes an app inspector called Symbiote, which helps you to get detailed information on your running app. Frank is most suited for emulators and web-based apps. iOS UI Automation iOS UI Automation tool can be used to automate user interface tests for iOS apps by writing test scripts. Through automating tests of UI interactions, you can minimize procedural errors & shorten the time needed to develop product updates. UI Automator It creates functional Android UI test cases to test your user interface (UI) efficiently. Mobile app development and testing tools continue to be developed at a rapid pace and I will be updating them here, so keep checking again for more updates. Also, don’t forget to use our Free Mobile Automation Testing service. MonkeyTalk MonkeyTalk is a complete functional test platform for iOS and Android apps. The scripts use simple keyword syntax and Ant or Java execution engines. It supports native, mobile, and hybrid apps, real devices, or simulators. Need help with Mobile Test Automation? Contact us now!