Heroku Postegrs - Seamless Scaling - heroku

I am using the Heroku Postgres Add-On for the data layer of my web app. There are several plans available, from 9$/m to 6400$/m.
How fast and seamless can I scale between them if the database turns out to be a bottleneck for my application? Is there some kind of API for this or do I have to upgrade plans manually?

If you are using a production tier database, the recommendation is to create a new follower database with a plan level you want. Once the follower is caught up to the master you can briefly place your app in maintenance mode and promote the follower database to master database. I've been using this method to upgrade to a new database tier with very little downtime (minutes).
Heroku's documentation details the process: https://devcenter.heroku.com/articles/heroku-postgres-follower-databases#database-upgrades-and-migrations-with-changeovers

Related

Do I need MongoDB Atlas if I have Heroku?

Can someone explain me why we need the Atlas?
If I have Heroku which gives an easier access to cloud (PaaS), then why we need MongoDB Atlas?
Some sources say that we can connect Heroku with Atlas, but why we need that? And can please someone explain me the difference, because it seems I do not understand it completely.
Will be very thankful to everyone. Articles will also be good.
Heroku is a PAAS where you can deploy your applications. Multiple languages are supported and the development experience is great (deploy from Git or using Docker, plenty of examples and documentation).
Typically your application needs a data store to persist the data, Heroku offers few options (ie Postgres) but no more MongoDB. An alternative is to use Atlas where you can define your MongoDB cluster and databases.
Both Heroku and Atlas have a free-tier so you can run both the application and the database without cost. As your database grows you might need to buy a different subscription, this applies to Heroku too if you require more resources or for example no downtime (Heroku Free tier sends the Dyno to sleep after 30 min inactivity).
A good article to use Heroku with Atlas is Detaching from mLab

How to make multiple databases in mLab MongoDB add-on in Heroku

I am using mLab MongoDB add-on free version in Heroku.
I want to make two sets of data bases(development, production). But it does not allow me to make multiple databases. Any possible solution to fix this problem?
The paid solutions seem to only increase store capacity and other few features related to monitoring
I have sent an email to mLab. The response is that it is not possible to make multiple databases with a single mLab add-on in heroku. Instead what I can do is add a completely new mLab add-on. But this would be cost inefficient and data cannot be transferred directly from one database to another.
The other solution they suggested, is simply to make mLab database using mLab account itself instead of heroku. Then I would be able to make multiple database in a single instance with a better pricing.

Alternatives for Continuous Query Notifications in Oracle 12c CDB/PDB setup

Long time trawler and massive fan of the site (you guys effectively taught me to code so big props to you all :D).
So as for my first question:
My company is currently developing an application that is back ended by an Oracle database, now in production this is going to be deployed in a 12c multi-tenant architecture. However the issue is our offshore development house had been developing and testing on 11g and incorrect infrastructure, something I have pushed to and mostly fixed since joining the compnay some months ago.
We have now hit a stumbling block, it has become apparent that our development house have no actual Oracle expertise and are SQL Server developers playing at Oracle, as such they are stuck on how to implement the functionality of Continuous Query Notification (CQN) in Oracle 12c given that this is deprecated in multi-tenant architecture.
I want to ask if anyone here has any suggestions for way to achieve the same functionality of a CQN in Oracle 12c?
The use of external scripts or solutions is doable, basically no limit on suggestions as we are at a stage where could potentially factor in any possible resolution.
Any help greatly appreciated.
how to implement the functionality of Continuous Query Notification (CQN) in Oracle 12c given that this is deprecated in multi-tenant architecture.
From the Readme Information for Oracle Database 12c Release 1 (12.1.0.2), Section 2.2, "Features Not Available or Restricted in This Release of Oracle Database 12.1.0.2":
Continuous Query Notification (CQN) is not available or is restricted for a multitenant container database (CDB)
It is not the only feature unavailable/restricted, but one of the many features mentioned in that list.
I want to ask if anyone here has any suggestions for way to achieve the same functionality of a CQN in Oracle 12c?
I don't think you could create an alternative at database level, you might just need to wait for further announcement from Oracle. If something could be done external to the database, you could do it at your own stake.
our development house have no actual Oracle expertise and are SQL Server developers playing at Oracle
That seems to be a bigger problem.
You have not provided much in way of details with how you are using CQN. If, as an example, the front end app wants a notification if inserts or updates are made in a table then there a few things you could do.
set up auditing on the table with "audit insert on your_table;"
create a custom view showing the actions on the table
run a job which picks up on the new actions and notifies the app by whatever method

What is the business benefit for Oracle Weblogic Server over OC4J?

Apart from Technology support , what are all the business benefits for oracle web logic server. For example in area of security,support etc.
What are all the new features supported by weblogic ?
TL;DR:
Support is great when you open ticket with Oracle Support (Weblogic strictly).
Great admin/read-only user implementation. We authenticate to Windows Active Directory. Developers get read-only accounts, reduces churn for them to wait for ops to transfer logs and validate settings.
Dashboard useful out-of-box to do real-time monitoring without additional tools or installs. Easily accessed by any one who is authenticated to login. We could give it to our CIO if he wanted in about 3 minutes by adding him to the right authorized group in AD.
Easier to clone environments.
I haven't worked with OC4J but I believe Oracle's roadmap is picking Weblogic as their preferred Java application server. You can see it is the base technology for some of their other products, such as Oracle Service Bus, Oracle Enterprise Manager (OEM), and Oracle Line Planning.
I have opened 3 Oracle tickets in the past month. I was surprised at how fast they answered. For a Severity 3 ticket (medium), they usually have responded in 2-3 days. I can't say the same for their other services (over 2 weeks for a ticket on OEM).
Security is a pretty broad scope... so you'd have to be a little more specific on some of the topics of security.
One thing that is pretty awesome is the Dashboard. http://docs.oracle.com/cd/E14571_01/web.1111/e13714/dashboard.htm You can obviously add read-only monitor accounts so other users can get insight to the performance. We add developers to this so that they can validate any settings, or see performance whenever there is a production issue.
We used Microsoft Active Directory authentication in our Weblogic domains. People are not using the default weblogic administrator user so configuration changes are audited. When someone's account gets disabled when leaving the company, it disables their access to Weblogic similarly. You don't have to change the password.
Other useful settings I like in it is the ability to automatically archive config changes. Each time someone makes a config change, a backup is automatically created. This allows me to go fix something when developers break their environment without having to majorly reverse-engineer what they did.
I also like the fact that you can pack and unpack the domains. I've used it to move entire domains from staging to production with some minor changes... i.e. change all stg to prod variables. This should likewise make it easier to 'clone' environments when you want to build out a new one.
Although not related, I should mention Oracle Enterprise Manager. We are an Oracle shop because they seem to have given us a good deal on licencing. So we get to run Oracle Enterprise Manager, which is a tool slowly becoming more and more useful. The agent also reports how our RedHat Linux hosts are behaving, network input/output, CPU utilization, memory utilization, java heap stacks. We are going to move to defining groups within that has all the targets related to an application stack. This will give our operations team the insight to see where the bottleneck might be... the Oracle Weblogic web layer, network, Oracle Service Bus, or Oracle Database performance.
Supposedly, you can add jBoss, other JMX monitoring as well to OEM. It's on our to-do list for non-Weblogic instance. We're slowly rolling OEM out.

What is the definition of a Heroku production app?

I have an app running happily on Heroku, but it's registered as a 'development' app, and I can't for the life of me find any formal definition of what a 'production' app is, despite the apps dashboard and the status page making a very clear distinction between the two.
I have come across this explanation of the status of the two, which suggests that the difference is implicit (based on usage) rather than explicit (based on some configuration / setup):
Production issues are those that affect running, stable, production applications that have at least two web dynos and use a production-grade database (or no database at all). Includes dynos, database, HTTP caching, other platform components (DelayedJob workers, scheduler, etc.), and routing.
Development issues are those that affect the health of deployment workflow and tools. Includes deployment (git push, gem installation, slug compilation, etc.), general git activity, command line gem/API (scaling up/down, changing configuration, etc.), and related services (rake, console, db push/pull with TAPS, etc.). Development also includes issues specific to the operation of non-production applications such as unidling free 1-dyno apps and the operation of development databases.
Even these explanations reference a mysterious difference between development and production databases, although there is no corresponding explanation of the difference anywhere. Is the $9pcm 'Basic' Postgres plan a 'production' database?
[UPDATE]
There is now a 'Run Production Check' link on the app dashboard within your Heroku account that shows the steps to determine your app status. Screenshot attached:
I've been trying to find the same answer to your question.
So far from what I can glean Shared / Dev / Starter databases via Heroku Postgresql Database plans are not considered production and only Crane and higher are consider production grade database plans.
The Heroku Postgres production tier starts with Crane and extends through to the Mecha plan. Shared, Dev and Starter plans are not production databases.
https://devcenter.heroku.com/articles/maximizing-availability
In addition, it seems that Heroku has a plugin to check to see if your app meets their guidelines:
https://github.com/heroku/heroku-production-check
I'm not sure if you scale up and down web dynos from 2 (during the day) and 1 (at night) with a Crane database if that would be considered "production" in Heroku's eyes.
Hope that helps!

Resources