Does Cloud Dataflow streaming workers get the Sustained Usage Discount? - google-cloud-dataflow

On the old pricing page they mention that all the Google Compute instances used by Cloud Dataflow workers are billed based on sustained use price rules, but the new pricing page does not mention it anymore.
I asume that since internally it is using the same Compute instances, the discount should probably apply, but since I couldn't find any mention of it anywhere, I would appreciate if anyone is able to confirm this.
Old Pricing
New Pricing

In the new pricing model there is no sustained use discount.

Related

Using multiple MBaaS accounts for a business

Is it ethical, (and also legal) to use Parse.com or a MBaaS in a way that I can create apps for businesses, by creating a separate account for each business? For example, to limit the amount of requests that my one account makes, I wouldn't put 10 different business apps on the same parse account, rather, I would create 10 separate accounts for each of the 10 businesses and log into the respective one when I need to.
If not, what is the recommended solution to create a scale-able MBaaS that could handle such usage, because I heard Parse is a great solution for small apps, but when your requests start to build up (Which they would if I have 50 businesses all going through me) that the costs increase exponentially more than other MBaaS providers.
I am looking for the most ethical, and clean (and preferably low-cost) way to do this, to just get my business on it's feet. I look forward to any suggestions! Thanks.
That's a great question. It would be annoying to have 10 separate logins, that's for sure. I'm not certain what the answer is but I wouldn't suggest creating 10 dif accounts.
If scalability and price are your major concerns I'd be happy to try and help you out. I work with another MBaaS, CloudMine. Costs are clearly important to you because you're just starting out but you also don't want to end up paying for something that you won't receive support on.
I have some great introductory pricing that may be a good fit for you. I can't exactly answer your question but I can offer a suggestion for a platform if you're open to other options. If you're interested in learning more I'm happy to provide some more info.
cheers
Just so I understand, you are looking to have a single BaaS account and have a number of sub-app accounts under that... if so there are a few multi-tenant mBaaS solutions out there that do that. Some also give you separate logins per app, so if your building apps for others you can let them log in and see data on the app.
Kumulos does this, it may work for you.
www.kumulos.com

Structuring a Rails App to work with Remote Database via API

I am about to embark on the creation of one of my first meaningful rails apps, and am a bit unsure of how to structure things.
Here's my situation. I am using a SAAS inventory software that keeps track of approximately 4000 products. I need an app that can perform routine maintenance functions on the products. For example, to give you an idea:
Every week, calculate and set the "low stock alert quantity" for each product based on historic sales
Assign products to product categories based on rules (i.e. if the word "t-shirt" is in the title, automatically add it to the t-shirts category)
etc etc
My questions are as follows:
I'm not sure exactly how to structure the data in this app. Should I query the API each time I need to retrieve the products? Or should I build a local copy of the inventory in a local database, for faster querying? If I am to build a local copy of the database, what would be an efficient way of keeping an up to date version of each product without consuming too much server resources? Obviously I can't pull 4000 products via the API at once...and I also don't want a cron job to be running every minute of the day.
Where should I place the code for my remote API functions? Do I create a class, module, or something else?
Thanks for any advice.
First of all, do you really need a web interface? I don't see so in your app description. If what you want to build is a maintenance set of tools that would be executed periodically, why would you use Rails?
The way of structuring data depends on your needs and resources. Does your SAAS provide instant notifications on products update, such as webhooks? Does your SAAS API let you fetch only products that were updated after a certain date? What's more important to you, speed or working with up to date data? Answering those questions to yourself should help you to decide what the best approach is.
Regarding the app design, it looks that you could write a gem where you could have different modules to manage data, execute operations with that data and connect to the third party service, and use that gem in scripts that would execute periodically. I would recommend you reading a book on Object Oriented design that I truly believe it'd help you, Practical Object-Oriented Design in Ruby.
Just one last word, I'm taking too many assumptions here, no one but you know better your requirements, and the design of your software depends on that.
If your API follows REST then it can very easily be integrated into rails using ActiveResource. If the API is more complicated, you could use ActiveModel and roll your own implementation. Just create a base class of your own that handles connection and authentication and extend your models from that. Given the limited description of your problem, there's not much more I can say.

JIRA: Any way to compare summed up estimates for one release to available time?

the customer I'm working for uses JIRA. However since they have a big Enterprise license (~2k users) they will not sign off additional plugins that would only be used by a comparatively small amount of users.
However, we in lead development have to present a few figures that we have to assemble manually at the moment. We are supposed to be able to always tell for one release how many hours are already "booked". (Original) Estimates are added reliably to all issues and everything is assigned to exactly one release. Based on the amount of workers in the team I can calculate the number of hours we have for the next release.
Is there any built-in possibility to do a report for this at any time? I'm a bit lost at the moment since I wonder where I'd store or how I'd calculate the amount of hours.
Note: we're not allowed to buy plugins, but we have coders at our fingertips. :D So a hint on how to script or code this would be appreciated as well.
Thanks a lot!
I think that the easiest approach is to use JIRA REST API to extract the info you need. So this is task for your coders :-).
Please take a look on search method: https://docs.atlassian.com/jira/REST/latest/#d2e2450
I think that you can start with request like
/rest/api/2/search?jql=fixVersion=YOUR_RELEASE

Credit system: history based or balance based?

I am going to write a simple credit system that user can "add", "deduct" credits in the system. Currently I am thinking of two approaches.
Simple one: Store the user' credit as balance field in the database, and all actions ("add", "deduct") are logged but not used to compute the latest balance.
History based: Don't store the balance in database. The balance is computed by looking at the history of transactions, e.g. ("add", "deduct")
Both case would works I think, but I am looking to see if any caveat when designing such a system, particularly I am favoring the History based system.
Or, are there any reference implementation or open source module I am use?
Update: Or are there any Ruby/Rail based module like AuthLogic so I can plug and play into my existing code without reinventing the wheel (e.g. transaction, rollback, security etc)?
Absolutely use both.
The balance-based way gives you fast access to the current amount.
The history-based way gives you auditing. The history table should store the transaction (as you describe), a timestamp, the balance before the transaction happened, and ideally a way to track the funds' source/destination.
See the Ruby Toolbox for bookkeeping and Plutus double-entry bookkeeping gem.
In addition, if your credit system may affect users, then I recommend also using logging, and ideally read about secure log verification and provable timestamp chaining.
For logging details see: techniques for ensuring verifiability of event log files.
For open source code that does credit, you may want to look into: http://www.gnucash.org/
Adding and deducting credits implies that you might also need to be aware of where these credits came from and where they went. Any time you get into a situation like this, whether it is with currency or some other numerical quantity that needs to be tracked and accounted for, you should consider using a double entry accounting pattern.
This pattern has worked for centuries and gives you all of the functionality you need to be able to see what your balances are and how they got to be that way:
Audit log of all transactions (including sources and sinks of "funds")
Running balance of all accounts over time (if you choose to record it)
Easy validation of the correctness of records
Ability to "write-once" - no updates means no tampering
If you aren't familiar with the details, start here: Double Entry Bookkeeping or ask anyone who has taken an introductory course in bookkeeping.
You asked for a Ruby on Rails open source solution that you could plug and play into your application. You can use Plutus. Here is an excerpt from the description of this project on Github:
The plutus plugin provides a complete double entry accounting system
for use in any Ruby on Rails application. The plugin follows general
Double Entry Bookkeeping practices. ... Plutus consists of tables that
maintain your accounts, entries and debits and credits. Each entry can
have many debits and credits. The entry table, which records your
business transactions is, essentially, your accounting Journal.
yes, use both.
On top of that, you'll sometime need to reverse a transaction/
transactions.When doing that, create a new reversed transaction to
notate the money transfer.
sometimes, You'll need to unify several transactions under one roof. I suggest to create a third table called 'tokens' that will be the payments manager and you'll unify those grouped transactions under that token.
token.transactions = (select * from transactions t where t.token = "123") for example

Geo-location by Zip/Postal Code

I'm looking for a service to get a latitude/longitude dynamically by zip/postal code.
I also need this service to give me an address (city/state/country) by providing an IP Address.
I will be using this service on my website and don't want to download and maintain a database.
I looked at a few services, some too expensive and some free with a max amount of daily/monthly lookups.
What are some good free services and what are some good paid services (Not too expensive) that allow for a large amount of queries?
I am using asp.net c# with MS SQL Server 2008 or later.
Thanks in advance.
The US zip codes are free (maybe just not very well maintained):
http://www.census.gov/geo/www/tiger/tigermap.html#ZIP
Also see a (whole world) crowd sourcing project:
http://www.freethepostcode.org/
The database of the UK zip code location was leaked last year or so. Or maybe it was made public by some government scheme I can't remember. It is definitely available here: http://www.freepostcodes.org.uk/
For lat/long: Google and Yahoo allow for several thousand queries per day, at least the last time I used them.
For GeoIP lookup, I can't say. In the past, I've used aggregate data from Google AdWords. This may be true of other advertising networks, or some may give you info per user.

Resources