We are planning to put our product on Azure marketplace. The product is installed on Windows server machines and is distributed in nature. The architecture that suits us the most is Iaas, however, we are concerned about keeping multiple versions and the upgrade policy. We normally release 2 versions of the software every year plus there could be more patches and service packs.
Please also note that our software doesn't have in-place upgrades. That means to upgrade our software, it is needed to be uninstalled and reinstalled.
We've googled to get some help but couldn't find any satisfactory answers. I'll appreciate if someone could. The questions we are really concerned about are;
How many versions can/should we keep on marketplace?
What should be the process to upgrade software on machines already running on Azure?
How to handle public patches and service packs?
Thanks.
Related
We (ISV) are currently planning to offer our software on a rental/subscription basis as a service.
It's a native Windows (C++ / .NET) B2B application.
Our software needs access to the file system (drives) on the customers computer and it also needs access to the network (e.g. be able to find other computers in the network).
We want to offer our customers a service where they do not have to bother themselves with setup/updates and always work with the newest version of our software. So we need a single point of maintenance.
In the first phase we do not expect a lot of our customers (let's say 20) to change to this model, so it would not be a problem to have to set them up and manage them manually, but in the long run a solution that allows an automated set/sign up process would be required.
What I found most promising was Citrix XenDesktop/XenApp with VM hosted Apps and personal vDisks, but it seems that the Citrix solution is not able to get access to the network on the client PC (I tried it with the trial in the Azure Marketplace). Also it seems to be high priced.
What would be other possible ways to meet these requirements?
Unless you can make some significant architectural changes to eliminate the need to access the local filesystem and and eliminate the need to do local network browsing, I would recommend focusing on optimizing your local installation and update process. And skip the virtualization/service idea "for now".
You can still go to subscription model with a locally installed application. Just require your application to "phone home" to check its licensing/subscription status on startup.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 1 year ago.
Improve this question
A client that I’m working for has a fleet of BeagleBones/Raspberry PI’s operating at customer locations. These devices are installed on local networks and behind firewalls. For SSH connectivity there are several options but we’re still struggling with Software deployments on these devices. We’re not relying on container technology for the moment, so Docker Cloud or Resin.io are not an option, but resin.io looks very promising. We’re using AWS IoT for data collection.
Some requirements regarding the deployment:
push software server -> device
staged rollouts, rollout to a percentage of device which increases over time
rollback software
device provisioning
no container technology
What are some good approaches to achieve this?
(Disclaimer: developer evangelist at resin.io here).
The good thing is, that software that does not rely on containers, can still packaged up (while it does not work the other way around). Containers in resin.io are used as a means to deliver software onto the device, and implement interesting, useful, and safe update strategies, which otherwise would not be possible or would be harder to do. For example:
your application code has a bug (happens!) and crashes. Does that take down the entire device including networking? (on resin.io containers help to limit damage, your app crashed but the device is online and can be updated)
do you have to update the entire machine image when you have an application update? (using containers like this, what's changed in your application code is updated, which results in very little data traffic most of the time, and very quick changes when needed)
using containers like this lets you have practically zero downtime upgrades (starting the new application, and the old running version hands over resources to the new one).
This is not to convince you about container tech, just highlighting that whether or not your own application is containerized (most likely it's not and will stay like that!), do not select against services that use that tech as part of their stack. Every service tries to deliver the functionality you need in any ways necessary.
As for your checklist with regards to resin.io:
push software server -> device: check, git push resin master and your code is getting deployed
staged rollouts, rollout to a percentage of device which increases over time: not part of the general feature set, but it's easy to implement using the resin supervisor API: for example lock updates for all devices, and you can select which devices would get unlocked and updated. Since it's all through an API, it's customizable to fit your preferred deployment strategy
rollback software: not part of the general feature set (yet), but with git it's easy to re-push previous versions. Some care needs to be taken to pin versions of the libraries in your setup to result in a reproducible setup, but doable in practice.
device provisioning: automatic device setup, or provisioning through an API/SDK/CLI is available
no container technology: as mentioned above, in practice you should not need to care too much what way the service delivers your software, as it does not affect how your application behaves, in most cases.
Also, you mentioned AWS IoT, there's some documentation on integrating resin.io with AWS, including an example project doing automatic device provisioning of resin.io devices with AWS IoT (plug in a device, and it automatically gets credentials for AWS IoT). It might be something that interests you.
How about Kura project?
The project has Beaglebone and RPi Gateway software.
http://www.eclipse.org/kura/
http://eclipse.github.io/kura/doc/deploying-bundles.html#install-deployment-package-to-target-device
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I want to learn Windows Azure to prepare for MCSD Web Development certification. Assuming that I have access to Visual Studio, VMWare, SQL Server etc., is it possible to develop and test Azure applications locally? I want to run Azure on my virtual machine without registering at Microsoft website, applying for any trial periods etc. Any suggestions?
TLDR: You can learn a lot about Azure without an account. Probably enough to pass the test; but maybe not enough to manage a production deployment.
You can learn a lot about how applications run inside of Azure using the emulators (express and full) that are included with the Azure tools for Visual Studio. Microsoft has several decent articles on getting started with the Azure tools. However, there is some tacit knowledge about actually using Azure -- things like how to navigate the management portals (or the fact that there currently are two portals) -- that can probably only be learned through actually using the infrastructure. Those kinds of questions may not be on the test, but the knowledge will definitely be helpful if you ever have to deal with Azure in a professional context. Start with the emulator, build some things that will run on Azure, and once you have a few samples, reconsider using a 30 day trial to actually run something in Azure and get a "feel" for the real thing.
As a side note, the Azure platform has evolved quite a bit over the last several years... if you find yourself reading an article from 2011 or '12, you may want to check again for newer information, as the recommended tools/APIs/etc may be deprecated or just plain gone in the newest SDKs.
The best way to understand Azure without Azure account is to install Windows Azure Pack.
https://technet.microsoft.com/en-us/library/dn296435.aspx
Try Microsoft Virtual Academy It's free and if you setup a Microsoft Account you can track your progress. They have a lot of courses on different Microsoft products and I just searched and found a few for Azure.
The good thing I like about the courses is that they are presented by MVP's, MCT's and Microsoft Evangelists, so they know what they are talking about.
I am using Installshield for the installation of a product.
I am attempting to find a way to verify an active internet connection before I continue with the installation of my product.
I checked all over, even the manual/help guides from the Installshield people.
I am setting "Program Features" through the Installation Designer->Setup Design->Program Feature(s), and figure if anyplace, it would be in here.
Has anyone worked on this before, and found a viable solution?
ps: I am also trying to find a way to check for minimum system requirements as well (NOT THE O.S. Version, just simple things such as minimum physical memory and minimum RAM)
Much Appreciated,
-Kyle
It's possible, but I wouldn't do it in an install, I would do it in the application as the state of the internet connection could change after the install is performed.
I'd also want to clearly understand why this is required before implementing it. For example I have no direct internet access ( by design ) where I do my software development for security purposes. If I couldn't install or run software because of that, I simply wouldn't buy the software.
Then there are security implications of software applications and installs phoning home and hence why I stay disconnected from the internet on certain machines.
That said, to test for an internet connection, you first have to define what that means. Perhaps you have a public web service that you want to invoke?
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
I have a team of developers distributed Globally over different time zones.
what are the best tools to achieve maximum productivity in such a team?
I am looking for:
Source Control
Bug Tracking
Build Management
Any other thing that may help
Thanks
For the first two:
Distributed source control, like git
A good issue tracking tool, like Jira
This question is underspecified. Many packages exist for each category that you list, all designed to support collaboration across people distributed globally over different time zones.
So I can make a recommendation, based on open-source tools that have worked for me in the past. You may have specific needs that require more specific solutions, but you didn't mention them. Also, for productivity, it is useful if people can continue to use tools they are familiar with, and you didn't explain what tools your people already know.
In any case, here is my recommendation:
use Subversion for source control
use Roundup as the bug tracker
use make for the build management, use Buildbot for automated, distributed builds
use mailing lists, based on Mailman
For .NET environment:
SVN server: VisualSVN server (free)
SVN client: AnkhSVN 2.0 (open-source)
Continuous Integration: CruiseControl.Net (open-source)
Bug tracker: BugTracker.NET (open-source). But if you can, i would recommend Trac.
I am very satisfied with Assembla - they host SVN server and Trac for your projects for very reasonable prices (or for free if the oproject is public).
Consider Fogbugz for bug tracking. It's helpful.
As source control: why not a distributed system, like git (if you are not using Windows), Mercurial or Bazaar?
For bug tracking, I would go on Trac - it has also an integrated Wiki, that is always useful for project documentation.
As for build management, you could go on cruise control, or ant - I am not really expert on this side.
However, there is something you should really take into consideration: the main issue for distributed teams is not the toolset, is communication.
This is even more important in an "agile" setup, as suggested by your tag.
The best mitigation I have ever seen for this issue is videoconferencing. It is very effective for enhancing communication bandwidth in distributed teams, and with GTalk and Skype is now really inexpensive.
When you say "open source" do you just mean free software, or do you mean "I need/prefer to be able to see the source"?
Note that your decision will be influenced by the nature of your project. There are many free development/project hosting sites that require that your project must be an open source project and free/open to the public.
You may also choose to go with a particular hosting platform based on the language you are using to develop the project. For example, CodePlex (http://www.codeplex.com/) is a site that hosts open source .Net based projects, and Java.Net (http://community.java.net/projects/) hosts Java projects.
The other answers given to your question are solid, here is what I currently use or have used in the past:
A great continuous build tool JetBrains TeamCity. (http://www.jetbrains.com/teamcity/) The tool has out of the box support for many build tools as well as for building Visual Studio solutions out of the box. It is free for teams of 20 or less developers. It also has loads of functionality out of the box, and can be up and running for you in minutes - a remarkably low learning curve without cutting back on features.
A useful SVN repository which is free for two developers, and will save you the time of setting up and administering your own SVN repository is Unfuddle. (http://www.unfuddle.com) Unfuddle also has extra paid-for features and basic task tracking.
Another paid source repository is ProjectLocker (http://www.projectlocker.com) which has low priced SVN repositories and Trac integration for task management.
A useful task tracking tool is Remember The Milk (http://www.rememberthemilk.com) - it does not work on "tickets" like Trac, it is not only for tracking projects, but it does allow you to email each other tasks, and to have shared task lists. I also point them out because the product itself is developed by a distributed development team and you might want to try mail them for advice. :-)
All the best to your team!
A wiki is a must.
It helps as an asynchronous communication media between ans inside the teams. People can share their tips (eg how do I compile this, how to activate traces ... ). It can be used to gather design decisions or changes...
People can ask questions to the whole team without clobbering other mailboxes.
It can also be used to grow the documentation.
There is a gazillion of wiki's, pick one depending on what you plan to do with it.
I think you'll need a few more things to help out with this project than what you've asked.
First, I'll give my recommendations for your list:
Source control: git or svn, if yu use either of these, you'll need a way to let your developers know who checked in what and when, Trac is good for this for svn
Bug tracking: Trac (not Bugzilla), Mantis, FogBuz
Build Management: CruiseControl is great for continuous integration; if you need build scripts try Ant or Maven
Other things you will probably need:
Collaboration tool: Trac has a wiki or pick a wiki of your choice
Chat tools: Even though they are across timezones, instant communication will be needed. IRC, Jabber, Skype, which is great for video or audio calls over the internet.
Project management: you'll need a way to setup your releases (sprints if using Scrum) and your backlog. My favorite tool for this is Acunote: (http://www.acunote.com). There are some other out there but they are more expensive and you get all of the features that you probable don't need.
I hope this helps.
Yes I strongly believe that in distributed teams a tool is important. Communication is hard enough if you are not working locally together. A tool like e.g Agilo for Scrum that is based on trac offers you with a wiki, a planning board (online whiteboard) and supports you in this way to improve the communication with your colleagues.