1. The document discusses the differences between relational databases (RDBMS) and NoSQL databases.
2. It notes that while NoSQL databases provide more flexibility and scalability, they come with tradeoffs like a less structured data model and immature management tools.
3. The document considers questions a DBA should ask about data access patterns, transaction support, schema changes, data modeling, dataset types, constraints, scalability needs, and operational challenges of adopting a new NoSQL solution.
The document discusses NoSQL databases and how they provide more flexible schemas compared to traditional SQL databases. It presents an example Java class that performs basic CRUD operations on a MongoDB database collection to insert, retrieve, and delete person documents without having to define and migrate a schema. The document advocates for considering NoSQL databases like MongoDB as they allow for more agile development by facilitating rapid prototyping and being tolerant of schema changes.
The document discusses version control and introduces Git as a distributed and centralized version control system. It explains the key properties of Git including being file-based, fast, using checksums, and attention to detail. The document also outlines some of the basic Git commands like add, commit, reset, checkout, diff, and demonstrates other commands like stash, log, show, amend, and branching and merging. It concludes by asking when organizations should switch from SVN to Git version control.
Cranking CI to 11: Deployment PipelinesKnut Haugen
The document discusses cranking continuous integration (CI) to 11 by automating various development and deployment processes through plugins and features. It suggests automating upstream and downstream features, building pipelines, freestyle jobs, post-build tasks, Gerrit reviews, matrix security, manual jobs, and integrating with Jira. The goal is to automate as much of the software process as possible through CI to minimize manual labor and enable fully automated deployment.
Artificial intelligence (AI) is everywhere, promising self-driving cars, medical breakthroughs, and new ways of working. But how do you separate hype from reality? How can your company apply AI to solve real business problems?
Here’s what AI learnings your business should keep in mind for 2017.
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
We asked LinkedIn members worldwide about their levels of interest in the latest wave of technology: whether they’re using wearables, and whether they intend to buy self-driving cars and VR headsets as they become available. We asked them too about their attitudes to technology and to the growing role of Artificial Intelligence (AI) in the devices that they use. The answers were fascinating – and in many cases, surprising.
This SlideShare explores the full results of this study, including detailed market-by-market breakdowns of intention levels for each technology – and how attitudes change with age, location and seniority level. If you’re marketing a tech brand – or planning to use VR and wearables to reach a professional audience – then these are insights you won’t want to miss.
1. The document discusses the differences between relational databases (RDBMS) and NoSQL databases.
2. It notes that while NoSQL databases provide more flexibility and scalability, they come with tradeoffs like a less structured data model and immature management tools.
3. The document considers questions a DBA should ask about data access patterns, transaction support, schema changes, data modeling, dataset types, constraints, scalability needs, and operational challenges of adopting a new NoSQL solution.
The document discusses NoSQL databases and how they provide more flexible schemas compared to traditional SQL databases. It presents an example Java class that performs basic CRUD operations on a MongoDB database collection to insert, retrieve, and delete person documents without having to define and migrate a schema. The document advocates for considering NoSQL databases like MongoDB as they allow for more agile development by facilitating rapid prototyping and being tolerant of schema changes.
The document discusses version control and introduces Git as a distributed and centralized version control system. It explains the key properties of Git including being file-based, fast, using checksums, and attention to detail. The document also outlines some of the basic Git commands like add, commit, reset, checkout, diff, and demonstrates other commands like stash, log, show, amend, and branching and merging. It concludes by asking when organizations should switch from SVN to Git version control.
Cranking CI to 11: Deployment PipelinesKnut Haugen
The document discusses cranking continuous integration (CI) to 11 by automating various development and deployment processes through plugins and features. It suggests automating upstream and downstream features, building pipelines, freestyle jobs, post-build tasks, Gerrit reviews, matrix security, manual jobs, and integrating with Jira. The goal is to automate as much of the software process as possible through CI to minimize manual labor and enable fully automated deployment.
Artificial intelligence (AI) is everywhere, promising self-driving cars, medical breakthroughs, and new ways of working. But how do you separate hype from reality? How can your company apply AI to solve real business problems?
Here’s what AI learnings your business should keep in mind for 2017.
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
We asked LinkedIn members worldwide about their levels of interest in the latest wave of technology: whether they’re using wearables, and whether they intend to buy self-driving cars and VR headsets as they become available. We asked them too about their attitudes to technology and to the growing role of Artificial Intelligence (AI) in the devices that they use. The answers were fascinating – and in many cases, surprising.
This SlideShare explores the full results of this study, including detailed market-by-market breakdowns of intention levels for each technology – and how attitudes change with age, location and seniority level. If you’re marketing a tech brand – or planning to use VR and wearables to reach a professional audience – then these are insights you won’t want to miss.
Introduksjon til TDD i et .NET/C#-perspektiv. Inneholder historie, forklarer hvorfor TDD ble innført og hvilke fordeler testdrevet utvikling fører med seg, beskriver FIRST-prinsippene, red-green-refactor og Arrange, Act, Assert, mocking og anbefalinger for videre lesning. Beskriver nUnit, moq og AutoFixture, som Creuna har standardisert seg på.
Ikt Fagforum - Presentasjon Av Autentiseringsprosjektetleiftorger
Kort gjennomgang av åpne tekniske komponenter som er blitt benyttet i prosjektet "autentiseringsløsning for Helsebiblioteket" (I&AM for Helsebiblioteket).
Intern presentasjon for IKT-avdelingen i Kunnskapssenteret.
I moderne web og mobile applikasjoner forventer brukerne å ha samme kontroll og oversikt som i tradisjonelle desktopapplikasjoner. Det skaper noen nye utfordringer for oss utviklere når front-end kjøres på en annen enhet en back-end som igjen typisk kjøres på en annen server en eksisterende kjernesystemer.
I denne sesjonen viser Joar Øyen hvordan slike utfordringer er løst i en moderne web applikasjon fra Lindbak Retail Systems. Du får vite mer om Service Bus for Windows Server, Signal R og Windows Azure Notification Hubs og hvordan disse produktene er satt sammen for å holde brukere oppdatert i en asynkron verden.
Driftbarhet - Steg mot smidig drift, JavaZone 2010ilmyggo
De fleste utviklingsprosjekter drives av funksjonalitet. De gode prosjektene fokuserer på vedlikeholdbarhet. Alt for få leveres med god driftbarhet.
Tilrettelegging for drift bør prioriteres høyere i utviklingsprosjekter. Dessverre overskygges driftbarhet ofte av ensidig fokus på funksjonalitet. Resultatet er en kaotisk og uoversiktlig driftssituasjon med brannslokking og påfølgende etterarbeid.
Denne sesjonen gir eksempler på hvordan man kan oppnå god driftbarhet med relativt enkle grep. Basert på positive og negative erfaringer fra flere prosjekter ser vi på hvordan applikasjoner kan tilrettelegges for drift samt konkrete teknikker og verktøy som kan benyttes.
Video: http://tcs.java.no/
Beskrivelse: http://javazone.no/incogito10/events/JavaZone%202010/sessions/Driftbarhet%20-%20Veien%20til%20smidig%20drift
Git i praksis - erfaringer med overgang fra ClearCase til GitFredrik Vraalsen
Git er et kraftig open-source, distribuert versjonskontrollsystem som er stadig mer i vinden, og mange ønsker å ta det i bruk. Hvordan får man til en smidig overgang fra sitt trauste sentraliserte versjonskontrollsystem? Er verktøyene modne nok? Kreves det superutviklere eller kan alle ta det i bruk? Hva slags arbeidsflyt og prosesser skal man bruke?
Vi har tatt i bruk Git i et større Java-prosjekt som omfatter forvaltning og videreutvikling av et salgssystem. Systemet har vært i drift siden 2002. Inntil i fjor benyttet vi ClearCase som versjonskontrollsystem, men valgte å gå over til Git. Motivasjonen var å få bedre ytelse, flere muligheter samt å spare penger.
I dette foredraget ønsker jeg å dele våre erfaringer med Git. Jeg vil dekke både selve migreringen fra et versjonskontrollsystem til et annet, utfordringer vi har støtt på og "best practice" for daglig bruk av Git i prosjektet vårt. Jeg vil også komme inn på hvilke andre alternativer vi evaluerte og hvorfor vi valgte Git.
Geodata har vært på AWS siden den spede begynnelse i 2008. Presentasjonen omhandler våre erfaringer og hvordan vi har benyttet AWS for å effektivisere vår utvikling av tjenester og løsninger.
Det finnes mye rart ute på nettet. Noen nettsteder er et mareritt å navigere for alle, andre er bare forferdelig for mennesker med nedsatt funksjonsevne. Noen nettsteder er umulige å navigere med en skjermleser. Andre inneholder tastaturfeller eller bruker farger som er bedre egnet til å kamuflere teksten enn å gjøre den lesbar.
Heldigvis for oss er nettet bygget av mennesker. Vi kan gjøre det tilgjengelig hvis vi bare prøver å gjøre det. Det finnes flere verktøy som kan være til stor hjelp hvis du vil verifisere at du lager et tilgjengelig nettsted. Automatiske tilgjengelighetstester kan være til enda større hjelp, og frigjøre tid til å fokusere på endringene som vil gjøre nettstedet ditt bedre for alle.
Introduksjon til TDD i et .NET/C#-perspektiv. Inneholder historie, forklarer hvorfor TDD ble innført og hvilke fordeler testdrevet utvikling fører med seg, beskriver FIRST-prinsippene, red-green-refactor og Arrange, Act, Assert, mocking og anbefalinger for videre lesning. Beskriver nUnit, moq og AutoFixture, som Creuna har standardisert seg på.
Ikt Fagforum - Presentasjon Av Autentiseringsprosjektetleiftorger
Kort gjennomgang av åpne tekniske komponenter som er blitt benyttet i prosjektet "autentiseringsløsning for Helsebiblioteket" (I&AM for Helsebiblioteket).
Intern presentasjon for IKT-avdelingen i Kunnskapssenteret.
I moderne web og mobile applikasjoner forventer brukerne å ha samme kontroll og oversikt som i tradisjonelle desktopapplikasjoner. Det skaper noen nye utfordringer for oss utviklere når front-end kjøres på en annen enhet en back-end som igjen typisk kjøres på en annen server en eksisterende kjernesystemer.
I denne sesjonen viser Joar Øyen hvordan slike utfordringer er løst i en moderne web applikasjon fra Lindbak Retail Systems. Du får vite mer om Service Bus for Windows Server, Signal R og Windows Azure Notification Hubs og hvordan disse produktene er satt sammen for å holde brukere oppdatert i en asynkron verden.
Driftbarhet - Steg mot smidig drift, JavaZone 2010ilmyggo
De fleste utviklingsprosjekter drives av funksjonalitet. De gode prosjektene fokuserer på vedlikeholdbarhet. Alt for få leveres med god driftbarhet.
Tilrettelegging for drift bør prioriteres høyere i utviklingsprosjekter. Dessverre overskygges driftbarhet ofte av ensidig fokus på funksjonalitet. Resultatet er en kaotisk og uoversiktlig driftssituasjon med brannslokking og påfølgende etterarbeid.
Denne sesjonen gir eksempler på hvordan man kan oppnå god driftbarhet med relativt enkle grep. Basert på positive og negative erfaringer fra flere prosjekter ser vi på hvordan applikasjoner kan tilrettelegges for drift samt konkrete teknikker og verktøy som kan benyttes.
Video: http://tcs.java.no/
Beskrivelse: http://javazone.no/incogito10/events/JavaZone%202010/sessions/Driftbarhet%20-%20Veien%20til%20smidig%20drift
Git i praksis - erfaringer med overgang fra ClearCase til GitFredrik Vraalsen
Git er et kraftig open-source, distribuert versjonskontrollsystem som er stadig mer i vinden, og mange ønsker å ta det i bruk. Hvordan får man til en smidig overgang fra sitt trauste sentraliserte versjonskontrollsystem? Er verktøyene modne nok? Kreves det superutviklere eller kan alle ta det i bruk? Hva slags arbeidsflyt og prosesser skal man bruke?
Vi har tatt i bruk Git i et større Java-prosjekt som omfatter forvaltning og videreutvikling av et salgssystem. Systemet har vært i drift siden 2002. Inntil i fjor benyttet vi ClearCase som versjonskontrollsystem, men valgte å gå over til Git. Motivasjonen var å få bedre ytelse, flere muligheter samt å spare penger.
I dette foredraget ønsker jeg å dele våre erfaringer med Git. Jeg vil dekke både selve migreringen fra et versjonskontrollsystem til et annet, utfordringer vi har støtt på og "best practice" for daglig bruk av Git i prosjektet vårt. Jeg vil også komme inn på hvilke andre alternativer vi evaluerte og hvorfor vi valgte Git.
Geodata har vært på AWS siden den spede begynnelse i 2008. Presentasjonen omhandler våre erfaringer og hvordan vi har benyttet AWS for å effektivisere vår utvikling av tjenester og løsninger.
Det finnes mye rart ute på nettet. Noen nettsteder er et mareritt å navigere for alle, andre er bare forferdelig for mennesker med nedsatt funksjonsevne. Noen nettsteder er umulige å navigere med en skjermleser. Andre inneholder tastaturfeller eller bruker farger som er bedre egnet til å kamuflere teksten enn å gjøre den lesbar.
Heldigvis for oss er nettet bygget av mennesker. Vi kan gjøre det tilgjengelig hvis vi bare prøver å gjøre det. Det finnes flere verktøy som kan være til stor hjelp hvis du vil verifisere at du lager et tilgjengelig nettsted. Automatiske tilgjengelighetstester kan være til enda større hjelp, og frigjøre tid til å fokusere på endringene som vil gjøre nettstedet ditt bedre for alle.
Tar utgangspunktet i boka med samme navn av Jez Humble og David Farley. Inneholder mange ting som mange av oss gjør i dag, men også en del nytt og kombinasjonen er nok ny. Og hvor langt man trekker det.
Dette er hovedspørsmålet man bør stille seg. Det har betydning for det hvor fort du kan levere verdi til brukerne.
Feedback er det sentrale. Feedback på mange forskjellige nivåer og til forskjellige deler av organisasjonen.
Deployment skal ikke være stressende og preget av nervøsitet, det skal være dagligdags.
From concept to cash. Tiden må være kort.
Gjenskape en tidligere release med alt som er involvert, inkludert miljø, avhengigheter etc.
Transparens i organisjonen. Informasjon til de som trenger det, når de trenger det.
Robust og sikkert. Så hvordan gjør vi dette?
Alt skal sjekkes inn! Ta vare på konfig for absolutt alt i versjonskontroll. OS-pakker, patching av infrastruktur, dns-oppsett, firewall-config, databasescripts, bibliotek, versjoner. Kort sagt alt. Målet er å kunne gjenopprette en bestemt versjon med miljø med automatisert prosess. Gode commit-meldinger Hold kontroll på external dependencies og biblioteker
CI er basis for CD.
Om commit stage feiler, fiks den umiddelbart.
Vær streng.. Hvor streng avhenger av kontekst.
Teststrategi * Start på starten av prosjektet, bare noen iterasjoner ut øker kostnaden fort. * Business med på test-strategi * Midtveis i prosjekt: Identifiser high value og viktigste use cases og lag happy path akseptansetester for dem (regresjon) * Legacy: Skaff automatiserte tester rundt kode du skal endre på og litt av samme som forrige punkt * Legacy: Validering av state for applikasjon etter testrun (for å fange opp ripple effect i andre deler av system * Teknikker for robust integrasjonstesting: o Simulere nettverksfeil av ulik art (nekte connection, opprette conenction og droppe, ekstremt lang svartid, svare med tulledata, Sende exceptions, * Testere kan pulle en release til testmiljø fra vcs/ci
Egenskaper ved automatiserte akseptansetester o Raskere feedback loop for utviklere o mindre manuell jobb for testere og frigjør tid til exploratory testing o regresjon o Kan være dyre å vedlikeholde o Treffe gui? Helst ikke.
# Prosessen blir transparent og tryggere # Release er hverdagslig og ikke skummelt. # Eliminer waste # Mål er å få tidlig feedback og luke ut builds som ikke kan prodsettes så tidlig som mulig
* Separate kompileringer kan introdusere endringer og krever konfigurasjonsstyring av kompilere på flere steg. Tar også ekstra tid *separasjon mellom kode og konfig (ear/war er dårlige her, siden de pakker alt inn) * Smoketest etter deployment (automatisert) * Deploy til en kopi av prod (så lik som overhodet mulig) * alle endringer skal gjennom pipeline med en gang (alle commit trigger pipeline (hvor pipeline ender er en annen sak) * Dersom ett sted feiler, stop the line (fra lean)
Fremgangsmåte for å lage en deployment pipeline
* Mavens bruk av plugins gjør at du ikke kan reprodusere builds (ut av boksen i alle fall) * rake og buildr er bedre valg for java når man skal automatisere og ha full track på builds? * Lag ett skript for hvert steg i pipeline * Bruk native tools for deployment, ikke rå scripting dersom mulig. Script heller bruken av verktøyet (wsadmin for websphere f.eks) * involver alle som skal deploye i design av deployment-metode * OS-pakker der det er mulig * deploy alt fra scratch, ikke inkrementelt (unntak: clustre og komonenter fra ulike kildekodetrær) * Utvikle deployment-systemet over tid, ikke big bang * Test konfigurasjonen av et miljø
# Blue-green deployment * To sett av prodmiljø * brukere er på blå, deploy til grønn, switch over i router # Canary releasing * Deploye til ekstra miljø eller deler av miljø som ikke er i bruk * rute brukere over for å avdekke problemer * vanskelig med databaseoppgraderinger/migreringer
Branch by abstraction:Lag et abstraksjonslag over den delen som skal endres. Endre/lag ny funksjonalitet og ta vekk gammel versjon/abstraksjonslag når ferdig.
Forskjellige kontekster har forskjellige behov og løsninger. De er forskjellige, men ikke nødvendigvis bedre eller dårligere enn andre.
* manuelle steg i release-prosess * manuell konfigurasjon i produksjon * Ventetid i prosess-steg * Detaljert doc på release-steg * Hyppige endringer på release-prosess under release * Dagen-derpå releaser * Uforutsigbart utfall av releaser * Lite tillit til releasing. * Deploy til prod (eller prod-like) først når man er ferdig.