l Need a holiday recipe? AllRecipes and Microsoft Azure cloud have you covered
itMYti.com < New IT WebNews
Category: news    |    Added: 2016-12-21 17:55:03    |    View: 153

How AllRecipes uses the cloud to power through the holiday cooking rush

recipes
Credit: AllRecipes
"; adDivString = "
" + adString + "
"; IDG.GPT.defineGoogleTagSlot(slotName ,[[320,50],[300,250],[300,50]]); } placementDiff = applyInsert($(this), adDivString); if (DEBUG) { console.log("Just placed an ad and the placementDiff is: " + placementDiff); } placementTarget = cumulativeHeight + placementDiff + INTERMODULE_HEIGHT + AD_HEIGHT_BUFFER; } else if (moduleCounter < articleDRRModuleList.length){ var elementId = "drr-mod-"+moduleCounter; var moduleDivString = "
"; modules.push(elementId); placementDiff = applyInsert($(this), moduleDivString); if (DEBUG) { console.log("Just placed a module and the placementDiff is: " + placementDiff); } placementTarget = cumulativeHeight + placementDiff + INTERMODULE_HEIGHT + MODULE_HEIGHT_BUFFER; moduleCounter++; } loopCounter++; } // Avoid placing elements too soon due to non-large figures inflating the cumulative height if ($(this).is("figure") && !$(this).is("figure.large")) { cumulativeHeight += GRAF_HEIGHT; } else { cumulativeHeight += $(this).height() + GRAF_HEIGHT; } } }); // end $("#drr-container").children().each() // clone Related Stories module to come in after eighth para in article body for mobile breakpoint display var $relatedStories = $('.related-promo-wrapper'); if ($relatedStories.length) { var $relatedStoriesClone = $relatedStories.clone(); $relatedStoriesClone.insertAfter( "#drr-container > p:eq(7)"); } // For mobile only, place ad after second paragraph. if (firstMobileAdHtml) { $(firstMobileAdHtml).insertAfter("#drr-container > p:eq(1)"); } var $insiderPromo = $('.insider-promo-wrapper'); if ($insiderPromo.length) { var $insiderPromoClone = $insiderPromo.clone(); $insiderPromoClone.insertAfter( "#drr-container > p:eq(1)"); } IDG.GPT.trackOmniture(); // Add Right rail module content var placeModule = function( data ) { var placementId = $(data).attr("data-placement-id"); $( "#"+placementId ).html( data ); }; for (i=0; i" + adString + "
"; } /** * @param jqo Original jquery object target * @param divString The div to be inserted. * @return Difference in height between original placement target and final target. * Checks first 6 elements for an allowable placement (600 pixel window). * If none, place element in first location that does not follow a reject element. */ function applyInsert(jqo, divString) { if (DEBUG) { console.log("applyInsert at top and jqo index is: " + jqo.index()); } for (var i=0; i<=6; i++) { $thisElement = jqo.nextAll().andSelf().slice(i, i+1); if (DEBUG) { console.log("Checking first six and i is: " + i + " and this element index is " + $thisElement.index() ); } if ($thisElement.index() < 0) { break; } if (allowPlacement($thisElement)) { return addElement(jqo, $thisElement, divString); } } if (DEBUG) { console.log("No nearby allows so just place in first spot that is not after reject."); } var numElements = jqo.nextAll().length; var startIndex = jqo.index(); for (var i=startIndex; i<=numElements; i++) { var $element = $("#drr-container").children().eq(i); // This element is eligible when not null, not in placement index, and previous element is not reject if ($element != null && (placementIndex == null || placementIndex.indexOf(i) == -1) && !isReject($element.prev())) { return addElement(jqo, $element, divString); } } if (DEBUG) { console.log("Not going to place element: return 0."); } return 0; } /** * @param jqo Original jquery object * @param allowElement Element that is good placement for module/ad * @param divString The div to be inserted before the good element * @return placementHeightDiff Diff in height between original placement target and current target. * * If element is not too close to the end the insert the div before allowable element. * Add element index to placementIndex to keep track of which elements already have placements */ function addElement(jqo, allowElement, divString) { var offset = allowElement.index() - jqo.index(); if (DEBUG) { console.log("addElement: jqo index is " + jqo.index() + " allowElement index is " + allowElement.index()); } if (elementNotNearEnd(allowElement, RIGHT_PIXEL_WINDOW)) { allowElement.before(divString); if (DEBUG) { console.log("addElement: Adding " + allowElement.index() + " to placementIndex."); } placementIndex.push(allowElement.index()); if (offset == 0) { return 0; } else { return getHeightDifference(jqo,allowElement); } } else { if (DEBUG) { console.log("addElement: Near the end so do NOT add."); } return 0; } } function getHeightDifference(jqo,allowElement) { var offset = allowElement.index() - jqo.index(), height = 0, children = null; if (offset > 0) { children = $("#drr-container").children().slice(jqo.index(), allowElement.index()); } else { children = $("#drr-container").children().slice(allowElement.index(), jqo.index()); } if (children != null) { children.each(function(i) { if (DEBUG) { console.log("About to add this element's height to heigh diff offset"); console.log($(this)); } height += $(this).height() + GRAF_HEIGHT; }); } if (offset < 0) { height *= -1; } if (DEBUG) { console.log("getHeightDifference: offset was " + offset + " and height diff is : " + height); } return height; } function allowPlacement(jqo) { if (jqo.prev() != null && isReject(jqo.prev())) { return false; } return true; } function isReject(jqo) { if (jqo != null) { if (jqo.is('h2') || jqo.is('h3') || jqo.is('h4') || jqo.is('h5')) { if (DEBUG) { console.log("isReject: found header"); } return true; } } return false; } // Returns true if height of all elements after this one is more than 500; false otherwise function elementNotNearEnd(element, pixelWindow) { if (pixelWindow === null) { pixelWindow = 500; } if (element === null) { return false; } var remainingHeight = 0, children = $("#drr-container").children().slice(element.index()); if (children === null) { return false; } children.each(function(i){ remainingHeight += $(this).height(); }); if ( remainingHeight > pixelWindow) { return true; } else { if (DEBUG) { console.log("Element too close to end. Remaining height is: " + remainingHeight + " and window is " + pixelWindow); } return false; } } } // end function executeDRRMobile() function executeDRRDesktop() { var heroImgHeight = $('figure.hero-img').outerHeight(true); if (heroImgHeight === null) { heroImgHeight = 0; } var galleryItemHeight = $('figure.thm-gallery').outerHeight(true); if (galleryItemHeight === null) { galleryItemHeight = 0; } var atAglanceTop = $('.at-a-glance.top').height(); if (atAglanceTop === null) { atAglanceTop = 0; } var drrContainerHeight = $('div#drr-container').outerHeight(true); var topIMUheight = $('#topimu').height(); if (topIMUheight === 0) { topIMUheight = 600; } var relatedPromoHeight = $('div.related-promo-wrapper').outerHeight(true); if (relatedPromoHeight === null) { relatedPromoHeight = 0; } var videoHowtoHeight = $('div#video-howto-wrapper').outerHeight(true); if (videoHowtoHeight === null) { videoHowtoHeight = 0; } var teadsInreadHeight = $('div.teads-inread').height(); if (teadsInreadHeight === null) { teadsInreadHeight = 0; } var unrulyAdHeight = $('.unruly_in_article_placement').height(); if (unrulyAdHeight === null) { unrulyAdHeight = 0; } //just in case the in article ads are picked up... var collapsibleAdHeight = unrulyAdHeight + teadsInreadHeight; var workingRRheight = ( (heroImgHeight + galleryItemHeight + atAglanceTop + drrContainerHeight) - (topIMUheight + relatedPromoHeight + videoHowtoHeight) ); workingRRheight = workingRRheight - collapsibleAdHeight; var DEBUG = false; if (DEBUG) { console.log('-----working RR height = ' + workingRRheight); } var articleDRRModuleList = ["dealposts","products.latest-reviews"], moduleUrls = [], modules = [], moduleCounter = 0, loopCounter = 0; var adPositions = new Array(0,1,3); // IMU, IMU, module, IMU, module if (false) { var dealpostsIdx = articleDRRModuleList.indexOf("dealposts"); if (dealpostsIdx > -1) { articleDRRModuleList.splice(dealpostsIdx, 1); adPositions = [0, 1, 2]; } } for (var i=0; i 650) { numItems = 1; } if (workingRRheight > 1350) { numItems = 2; } if (workingRRheight > 2300) { numItems = 3; } if (workingRRheight > 2950) { numItems = 4; } if (workingRRheight > 3650) { numItems = 5; } for (var currIndex=0;currIndex
"; adDivString = "
" + adString + "
"; IDG.GPT.defineGoogleTagSlot(slotName ,[[320,50],[300,250],[300,50]]); } //$('#drr-container > p').first().before(adDivString); //$('#drr-top-ad').append(adDivString); $(adDivString).appendTo('#drr-top-ad'); if (DEBUG) { console.log("-----Just placed an AD currIndex = " + currIndex); } } else if (moduleCounter < articleDRRModuleList.length){ var elementId = "drr-mod-"+moduleCounter; var moduleDivString = "
"; modules.push(elementId); //$('#drr-container > p').first().before(moduleDivString); $('#drr-top-ad').append(moduleDivString); if (DEBUG) { console.log("-----Just placed a MODULE and currIndex = " + currIndex); } moduleCounter++; } } //end for loop IDG.GPT.trackOmniture(); // Add Right rail module content var placeModule = function( data ) { var placementId = $(data).attr("data-placement-id"); $( "#"+placementId ).html( data ); }; for (i=0; i" + adString + "
"; } } // end function executeDRRDesktop()

Wondering what to have for Christmas dinner? AllRecipes.com will be a popular site to check this holiday season … and this year it’s using Microsoft Azure’s cloud.

AllRecipes, founded in 1997 and owned by Meredith Corp., has undertaken a two-year migration to Azure, the IaaS public cloud. AllRecipes services 1.5 billion visitors each year who view an average of 95 recipes per second, 66% of which are done on mobile devices.

The company’s load is cyclical: On a Sunday afternoon there is 60% more traffic on the website compared to a Monday morning. Just like a retailer, the holiday season is AllRecipe’s crunch time. Eight weeks in November and December including five days in particular – Christmas, Thanksgiving, the day before each and the Super Bowl – create the largest surge in traffic.

Instead of building out a data center footprint to the company’s maximum load capacity, managing all that infrastructure and paying licenses fees, AllRecipes is hosted almost completely in the cloud now. But it wasn’t always that way.

+MORE AT NETWORK WORLD: Why Microsoft’s cloud chief believes Microsoft is in prime position | How Rackspace will stay alive in the cloud: Stop competing with Amazon, start partnering +

john keane Allrecipes

John Keane, CTO of AllRecipes

About two years ago CTO John Keane joined the company and with a fresh set of eyes, questioned the capital expense of hosting the company’s infrastructure in a series of collocation providers such as Internap. “Our cooks come to us in a moment of need,” he says. “They’re sitting thinking about what they’re going to make for dinner, they’re checking a recipe on their phone while dropping the kids off at soccer, or are in the store making sure they have all the ingredients needed for a recipe. When they need to engage, they expect a fast and responsive site.”

Given the company’s variable workload demands, Keane believed the cloud would be a natural destination to host AllRecipes’ workloads. AllRecipes builds many of its apps in Visual Studio, Microsoft’s integrated development environment (IDE), mostly in C# - a programming language developed by Microsoft. These factors made Azure an easy integration point for public cloud.

Microsoft Azure now hosts the AllRecipes production website, along with other affiliated brands such as EatingWell.com, Parenting and Shape. AllRecipes uses mostly virtual machines, load balancers, SQL servers and a combination of various open source platforms, such as Cassandra to power its operations. It uses Datadog and New Relic to monitor, troubleshoot and optimize its environment, which Keane says are invaluable tools for both real-time and historical feedback and analysis.

AllRecipes uses Amazon Web Services too, particularly for apps that are primarily Linux based. Keane says it’s not a problem to have workers managing different clouds. Azure, he says, is great for hosting Windows workloads and integrating with the PaaS environment. AWS seems to have more granular infrastructure configuration options, he’s found.

“Microsoft is certainly catching up,” he says about the competition between the two dominant IaaS public cloud vendors. AllRecipe’s Enterprise Agreement with Microsoft, which already included using desktop machines and licensing made onboarding Azure – with some discounts – an attractive financial proposition too, Keane says.

This story, "Need a holiday recipe? AllRecipes and Microsoft Azure cloud have you covered " was originally published by Network World.

To comment on this article and other PCWorld content, visit our Facebook page or our Twitter feed.
Related:
Shop Tech Products at Amazon
Notice to our Readers
We're now using social media to take your comments and feedback. Learn more about this here.
source: Pcworld

Category: news    |    8 hours ago    |    View: 361

It’s been more than a month since Microsoft pushed pause on the rollout of the Windows 10 October 2018 Update (version 1809) due to a pesky bug that was erasing user data. The Redmond tech giant identified and remedied the&hellip;

Category: news    |    8 hours ago    |    View: 0

Although the practice of medicine may have seemed safe from the robot revolution several years ago, it's already beginning to prove itself in the industry.

Category: news    |    8 hours ago    |    View: 0

Unit-E Technologies, the latest company looking to capitalize on the mini console craze, is preparing to launch a crowdfunding campaign for the PC Classic.

Category: news    |    8 hours ago    |    View: 0

Not surprisingly God of War, Spider-Man, and Red Dead Redemption 2 are all up for Game of the Year. In fact, RDR2 and GoW are both tied for the most nominations in 2018. In addition to GOTY, both titles are&hellip;

Category: review    |    11 hours ago    |    View: 151

Follow these steps before ditching your smart device.

Category: news    |    13 hours ago    |    View: 99

Self-driving cars are one of the primary examples of tech previously thought to be impossible finally becoming a reality. Despite a few roadblocks along the way, autonomous cars are growing increasingly popular, and the public seems to have accepted them&hellip;

Category: news    |    13 hours ago    |    View: 0

Researchers at the University of Pennsylvania have found that limiting social media usage can significantly reduce the feeling of loneliness and depression.

Category: news    |    13 hours ago    |    View: 1

Black Friday and the official holiday shopping season is just around the corner, so the volume of deals has intensified and we're seeing many early opportunities as shown below, as well as preliminary announcements of the deals that will take&hellip;

Category: news    |    13 hours ago    |    View: 0

When PlayerUnknown’s Battlegrounds was ported to the Xbox One last year, PlayStation fans wondered if the game would be coming to their favorite console. Neither PUBG Corp nor Sony announced any plans for a PS4 version of the game. However,&hellip;

Category: news    |    15 hours ago    |    View: 112

Volvo at the 2017 LA Auto Show a year ago announced Care by Volvo, a subscription model that offers a new take on traditional vehicle ownership. For $650 per month, you get a new Volvo XC40 crossover, 24/7 concierge service,&hellip;




Download Latest PC Softwares

Category: utilities    |    Added: 21 hours ago    |    View: 18
NIUBI Partition Editor Technician Free Download - downloadwise.com

NIUBI Partition Editor Technician Free Download. It is full offline installer standalone setup of NIUBI Partition Editor Technician.

NIUBI Partition Editor Technician is an impressive application which can be used for performing a wide variety of disk and partition management tasks and for creating bootable media. Like any other disk management application, this one will also let you resize, format, move, rename, delete and perform a wide variety of operations on your computer’s partitions. You can also download Crypticdisk Pro.

Category: speedcommander-pro-2018-free-download    |    Added: 21 hours ago    |    View: 1
SpeedCommander Pro 2018 Free Download - downloadwise.com

SpeedCommander Pro 2018 Free Download Latest Version for Windows. It is full offline installer standalone setup of SpeedCommander Pro 2018.

SpeedCommander Pro 2018 is a very handy and powerful file manager which is equipped with loads of different features. It allows you to perform various different operations like renaming or splitting of the files. It has got it’s main focus on speed. You can also download Karaosoft KJ File Manager.

Category: wondershare-mobiletrans-free-download    |    Added: 23 hours ago    |    View: 7
Wondershare MobileTrans Free Download - downloadwise.com

Wondershare MobileTrans Free Download Latest Version for Windows. It is full offline installer standalone setup of Wondershare MobileTrans.

Wondershare MobileTrans is an imposing application which can be used for transferring the information between phones with various different operating systems like iOS, Android and Symbian etc.It is a very easy to use application which is it’s major plus point. You can also download Wondershare MobileGo 8.

Category: code-obfuscation    |    Added: 1 day ago    |    View: 14
Zend Guard Free Download - downloadwise.com

Zend Guard Free Download Latest Version for Windows. It is full offline installer standalone setup of Zend Guard.

Zend Guard is a handy program that will enable the developers to prevent their data and protect other users from accessing the code. This program can be used for encoding the source code in order to restrict the access to important information. You can also download Red Gate SmartAssembly Professional.

Category: 3d-cad    |    Added: 1 day ago    |    View: 1
Scia Engineer 2018 Free Download - downloadwise.com

Scia Engineer 2018 Free Download Latest Version for Windows. It is full offline installer standalone setup of Scia Engineer 2018.

Scia Engineer 2018 is an impressive, complex and fully features structural analysis and design solution that offers structural analysis and full structure modeling. This application has got loads of import capabilities so that the BIM models can be used from various different software packages. It performs the structural analysis using 2D representations of the structure. You can also download ARES Commander 2018.

Category: graphic-design    |    Added: 1 day ago    |    View: 1
ACD Systems Canvas X 2019 GIS Free Download - downloadwise.com

ACD Systems Canvas X 2019 GIS Free Download Latest Version. It is full offline installer standalone setup of ACD Systems Canvas X 2019 GIS.

ACD Systems Canvas X 2019 GIS is a very powerful and special edition of Canvas X that has its main focus on GIS mapping and editing, boasting a dedicated geographic information system module as well as GIS-related features. This application is for the GIS professionals in various different sectors and industries which includes energy, aerospace, government, education and many more. You can also download OpenCanvas 7.0.15. ACD Systems Canvas X 2019 GIS Free Download-GetintoPC.com

Category: operating-systems    |    Added: 1 day ago    |    View: 1
Windows 10 Gamer Edition 2018 Free Download - downloadwise.com

Windows 10 Gamer Edition 2018 Free Download Latest OEM RTM version. It is Full Bootable ISO Image of Windows 10 Gamer Edition 2018.

Microsoft introduced Windows in mid 80s and since then it has come up in many versions and the latest one of them is Windows 10. Windows 10 has enhance the user experience to a great degree. Today we are going to review Windows 10 Gamer Edition 2018. in this version you ca experience sleek as well as lightning fast performance and some high frame rates in various games. You can also download Windows 10 Enterprise 2019 LTSC with Office 2019.