I want to include dev, test, preprod, prod and maybe some other environment inside my Apigee organization. I was searching on the Apigee docs and inside environment configuration, and I could not find instructions on how to do that. How can this be accomplished?
From a physical standpoint there's no limit on the number of environments you can have in Apigee. On-premises customers can add their own environments. Apigee Edge (enterprise) customers need to open a request with Apigee Support. The free Developer product only supports test and prod.
Side note: environments share hardware. So if you have a dev-test and prod environment in the same org and load test your dev-test environment you're on the same hardware (and therefore load testing) your prod environment.
Yes, you can have as many as you'd like. I know we have at least three different environments in apigee (dev, stage and prod). You can get in touch with Apigee support regarding this.
Related
I'm using PostMan to test my REST API. Sometimes I want to test my Production environment, sometimes I want to test by Development environment. Both are authorized by different OAUTH 2.0 authorities. However, when I modify the Authorization settings for one collection, they show up in the other. For example, here's the general idea of my test scenarios:
When I modify the settings for my Development Collection:
Then I open my Production Collection, I get this:
How do I un-cross the wires so I can access a different authority for my production tests and a different authority for my development tests?
I think what you want or are looking for are environments. When you run a collection you can choose which environment to use. Here's a link to the documentation:
https://learning.getpostman.com/docs/postman/environments_and_globals/manage_environments/
We have a large centralized Rails app, and are beginning to hire outside developers to build small apps on top of our API. We'll be hosting those apps on a VPS running Ubuntu, and I'm wondering what's the best way to manage deploy permissions. We'd like to allow developers to deploy to our staging server, but not to have access to any of the other apps that live there.
Is a chroot jail pretty much our only option? In theory, I'd prefer that folks couldn't even log in to the server--just deploy to it.
I know something like limiting users to SFTP could work, but Capistrano 3 doesn't seem play nice with SFTP.
What do other folks do in this situation? Is it pretty non-standard to grant deploy access to a staging server in this case? Any suggestions?
It's a staging server… does it really matter if they have access? But assuming it does I would setup a single "deploy server" that was responsible for deploying. Then wire up a front end to it that your developers can initiate deploys based on permissions you've setup.
I don't have a concrete example, but I'm thinking similar to the "deploy on continuous integration test success" features you see and the "deploy from your Slack chatroom" stuff.
Same idea.
Quick noob question or two about Heroku.
I have a rails app I would like to deploy on Heroku.
If I want the address to be www.whatevername.ie do I need to purchase this domain name or does the custom domain name feature with Heroku allow me to do this?
Secondly, what is the difference between development and production with regards to deploying an app on Heroku? Once it's deployed and on the net, does this mean it is in fact "in production" so to speak?
Thanks!
Heroku
To answer your questions more fully, you need to appreciate that Heroku is a Platform As A Service - meaning that it will provide the back-end infrastructure for your application, but that's it:
In terms of a domain name, it's not for Heroku to buy you a domain. A domain is literally just a "mask" for an IP address (a shop window), which means you have to buy it (as the DNS system takes a lot to manage & maintain)
Heroku's custom domain feature is simply a means for you to accommodate external domain name traffic to your application. You'll have to buy a domain (we use Namecheap, but there are 1,000's of domain registrars you can use)
--
Rails
If you want to run a Rails application, the development and production environments are very important, although not much different than each other.
As mentioned in the referenced question, the underlying differences between "production" and "development" modes / environments for Rails is efficiency. You're running the SAME source code in both environments - the difference is how that source is handled, compiled & served
--
Development
Rails logger is running all the time
Exceptions are captured & displayed on screen
Classes are not cached
Assets are compiled "on the fly" (dynamically handled)
Typically operated with low-efficiency services (DB / Web Server)
Loads everything individually for development purposes
Production
"Assets" precompiled & served statically (for performance)
Classes can be cached
Production-grade web & DB servers recommended
Focus on efficiency & speed
--
By default, Heroku will run your Rails application in production mode
If I want the address to be www.whatevername.ie do I need to purchase this domain name or does the custom domain name feature with Heroku allow me to do this?
You need to purchase the domain name.
-
Secondly, what is the difference between development and production with regards to deploying an app on Heroku? Once it's deployed and on the net, does this mean it is in fact "in production" so to speak?
Development is what's on your computer locally; production is what's on the internet for all to see (in this case, on Heroku).
I am currently developing an MVC app using asp.net. My final aim is to deploy the saas on Azure.
But would it be feasible to do it at a later stage or should i incorporate it into my development?
When it comes to use Azure authentication etc i will require that due to the app being multi tenancy.
Just wanted to know peoples thoughts on this?
Cheers
It would be better if you can provide more information. Do you want to know if you ignore Azure at the moment, how much effort you need to take if you decide to deploy the application to Azure? In general it would not take too much effort, unless you want to use Azure services, such as storage, ACS, and so on. Deploying an ASP.NET application to Azure web site is just like deploy to a remote IIS. Deploy to web role requires you to create an additional cloud service project. Deploy to virtual machine usually does not require any modifications to the project, but requires you to setup all the environment.
In addition, please note there’re still some difference between Azure and local environment. For example, we usually use Azure SQL Service instead of connecting to the local SQL server.
Best Regards,
Ming Xu.
I'm doing something similar, but without developing on Azure right now. I have prepared for it though by making sure I use interfaces as much as possible. For instance, I don't write to a file system using File and Directory, but to interfaces IFile and IDirectory.
If you can avoid assuming anything based on your current localised, Windows Server environment then you can at least write implementations to satisfy requirements that do work in Azure. I'm planning to deploy to Azure and local Web servers and use Dependency Injection to satisfy the concrete implementation of the interfaces. I could just as easily use the same codebase entirely and have it detect the environment before injecting the implementations.
There is an option for us to have 2 or more web roles in a single deployment. But each deployment can be either be staging or production i.e. by extension, we get only 1 URL to access that deployment.
Considering this case how to access the different webroles, what will be the URLs for those.Also what is the use for having multiple webroles in a single deployment.
Why multiple web roles in a single deployment? Consider an application with a public-facing (customer-oriented) website, as well as an administrative website (maybe on port 8000). There are two basic ways to handle this:
Place both sites in the same web role. This means they now share the VM instances, network cards, memory, etc. It also means that, should you need to scale to handle traffic, both sites are scaled together as a single unit.
Place each site in its own role. Now, they're in their own VM instances and may be scaled separately.
Option #1 is more cost-effective because you can get by with only two role instances (minimum two needed for SLA). Option #2 is better for independent scaling. for instance: If you get a huge spike in customer traffic, this could cause trouble for you when trying to access the administrative website, whereas if your admin website is in its own role, it won't be affected by customer traffic.
In both cases, you get one IP addres, one *.cloudapp.net name (and you can map a custom domain name to it with a CNAME).
Staging vs. Production: Your entire deployment may be published to either Staging or Production (or both, as two separate publishes). Staging is not meant for external users - it's really meant for a pre-live area, where you can verify that a new deployment works as expected. You can then perform a virtual IP swap with your currently-running system in Production, which effectively swaps your staging and production deployments. This results in a near-instant upgrade of your software with no customer downtime.
Keep in mind: Every role in a deployment must stay together - you can't deploy one role to one service and the other role to another service. If you want to do this: Separate your roles into separate deployments. Then you can publish them to different URLs.
In a production deployment your webrole can be accessed by the URL with a prefix you defined previously for example myapp.cloudapp.net; web roles in staging deployment on the other hand can be accessed by automatically generated URL for example 205521014d8c440a83852b62e0df9db5.cloudapp.net
I am afraid there is no way to access web role instance directly, bypassing AppFabric router. Why would you ever need to do it anyway?
If you need get access from one web role instance to another, consider using a queue or distributed cache instead of direct communication.