We have a proprietary and patented video processing software that we license to others and we use on our own sites. A couple or our sites/apps get approximately 3 million page views per month and are on the verge of profit. The plan is to expand/scale the sites we own in the next six to twelve months. This scaling presents us with a opportunity to update everything in our system. Even though they were launched only a few years ago, so much has changed that we are forced to look at the whole architecture from hosting to platforms and development environments, etc. We are truly a garage startup and have to make the most of limited resources while trying to present a high quality solution. It is difficult and stressful. We cannot afford to get this wrong thus my appeal to the many experts here. We are starting with a clean slate and very much need to hear from experienced professionals to help us put together the best possible system from the top down.
Server/website - up to now we have used dedicated hosting. It appears that VM is now a good and much less expensive option. I am OK with that. In speaking with other insiders it seems that more and more people are going toward utilizing Azure or Amazon for hosting. We do have licensees in Europe who must be served by hardware in Europe due to latency issues. I think Azure or other allows a much quicker provisioning of another instance in whatever geographical area needed, that we can then customize for the project. For the web back end we are looking at .NET CORE. Not much interested in Linux based situations due to having a fair amount of available expertise in all things .NET.
The primary issue at this point
is to decide what platforms we will use for the website, Android and iOS apps. No real movement can happen until platforms/architecture are decided. I am an engineer who understands programming in general and has written code but I am not at all up to date on any of the various options are and how they integrate with one another.
- What platforms allow the highest amount of transference between the three modes of website, Android app, and iOS app? We would all hope for a universal programming language that is powerful, fast, and stable but to my knowledge this does not exist. So then what is the current best combination of languages that cover our needs and allow some amount of shared or easily adapted code. For example, if we write a module that adds a feature which maintains a log of commute times to work/office in the morning, where do we first create that feature and how much of the code can be used without major effort in the other two platforms?
- How does the stability and reliability of those platforms compare to industry agreed current kings of stability and reliability?
- Take into consideration needs of programmers such as available resources, how hard is it to program in these languages, difficulty of adding updates/features, ability to track and document changes, etc.
Apps - this is where I am completely lost. A platform(s) that allow the most cross pollenation of code. Meaning if we code a feature, it will be as simple as possible to make it work correctly on the website and 2 apps.
How to do updates or new releases that only affect the specified area or feature and ensure these changes don’t break other parts of the website or app? This has been an ongoing issue that can have a tremendous negative affect on customers and is burdensome for admin staff as they both deal with frustrated customers and try to pinpoint all of the negatively affected features, document it, and then get a fix implemented by the programmers and retest everything. We use revision software and any solution must inclue a strong revisioning program.
- Is this a common issue or can we implement architecture and procedures to reduce or eliminate this headache?
- What are the most useful methods to reduce these issues?
- How much effort/hours are required up front to reduce or eliminate these issues?
- Some suggested systems (I know nothing about them) – Appflow, Xamarin.
NOTE: There are many questions here but I didn't think that asking them as separate questions would be productive because we must take into account the overall design, current frustrations, and desired features of the overall architectures/systems. If needed I can break this down into more questions to be sure experts from different disciplines get the points that they merit.
Thanks to anyone who has any experience to help us make a better decision and avoid wasted time and limited funds.