[2018 oracle code one] evolutionary architecture in agile environment

Evolutionary architecture in agile environment

Speaker: Xavier Rene-Corail

For more blog posts, see The Oracle Code One table of contents


“Conflicts”

  • Not that we don’t have a plan. We have a plan. But it can change
  • Emerging design – do have a high level design. Not chaos
  • Things change. There’s nothing that will not change. Make easy to change the things that will/might.
  • Prototype architecture. Working software over comprehensive documentation. Architects shouldn’t deliver paper docs

Software architecture is

  • “the important stuff (whatever that is)” – Ralph Johnson
  • finding internal *abiities
  • managing conflicting *abilities and determining which is most important

Agility is

  • ability to move quickly and easily – Oxford dictionary

Evolution of architectural styles

  • Monolith – not scalable, single point of failure
  • Layered – defacto standard for JEE apps
  • SOA – natively scalable, but cn turn into monolith
  • Microservices – now need orchestration
  • Severless – abstract more

Beware of

  • Dependency hell/service dependencies
  • Distributed transactions

General

  • Minimize coupling
  • Couple fro highly changing to infrequently changing
  • Ask users for feedback. Don’t overarchitect
  • Feature flags. Make safe to fail
  • Eat an elephant one bite at a time. Design that way too

Decide up front – programming languages and frameworks. These are difficult to change.

My take: Good session. My notes are “less good” because I was eating lunch during the design principles. So listening, but not blogging! 

[2018 oracle code one] hands on lab JNoSQL

Hands on Lab: Eclipse JNoSQL: One API to Many NoSQL Databases

Instructors: Leonardo Lima, Otavio Santana, Senior Software Engineer, Hillmer ChonaPatricia Uribe & Jonathan Vila Lopez

For more blog posts, see The Oracle Code One table of contents


Lab URL: https://github.com/JNOSQL/oc1-hands-on-2018

Overview of NoSQL

  • No fixed data structure
  • not ACID
  • BASE -Basically Available, Soft State, Eventual consistency
  • Five types
    • key/value – Redis, Hazelcast, Couchbase
    • column family – Hbase, Cassandra
    • document – Couchbase, MongoDB, Riak
    • graph – Neo4J
    • multi-model – OrientDB, Couchbase
  • From most scalable/least complex to least scalable/most complex – Key/value, column family, document, graph

JNoSQL

  • First Jakarta EE specification
  • Mapping API – Artemis
    • Heavily based on annotation
    • “Query by” methods
    • Inject DocumentTemplate – has CRUD methods
  • Communication API – Diana
  • Trying to replicate JDBC/JPA for NoSQL
  • Traditionally, use different API for each NoSQL type
    • BaseDocument
    • Document
    • JsonObject
    • ODocument
  • DocumentEntity/Document – for all the types
  • Working on for 2 years
  • Almost up to 1.0 version
  • Configuration is one json file

My take: I like that they brought/shared their own wifi. Good overview at the beginning. I think I missed the point of the instructions at first. It felt too freeform. But then it made sense once they started explaining the code. So either it assumed knowledge or I thought we were doing something else. (I did get it to work; I just thought we were supposed to be doing something else.) Also, there was an instructor for each 1-2 attendees. Every time I went to do something (email, Slack, pull request), someone asked me if I needed help. I was waiting for Maven/Docker, not being idle! Also, not their fault, but the improvised lab room had sun blocking the screen. Overall, I enjoyed the lab. The second exercise clicked because I understood what we were doing!

[2018 oracle code one] beyond git add/commit/push

Beyond git add/commit/push
Speaker: Jorge Vargas and Victor Orozco
@edivargas and @tuxtor

Full deck: http://www.jorgevargas.mx/wp-content/uploads/2018/10/Git-SCM-en-v5.pdf

For more blog posts, see The Oracle Code One table of contents


Review

  • add – puts in to staging area (from working directory)
  • commit – puts in local repo
  • push – puts in remote repo
  • reset hash – override working directory with local repo
  • fetch – get from remote repo to local repo
  • pull – fetch + merging into your local branch
  • clone – get from remote repo to working dir

Workflow

  • select a workflow – varies by project, but all team members should know what using
  • Common workflows
    • Centralized – all commits to master. Usually for new git users.
    • Feature branch – do feature in a branch and then merge in.
    • Gitflow – do changes in branch and merge into develop. Then merge development into master. Only commit to master for hotfixes or when develop ready for release
    • Forking – copy of repo and merge in
  • Recommendations
    • No one workflow to rule them all.
    • Code in master should be complete and functional at all times
    • Create short lived branches
    • Use meaningful names for branches

Advanced Git commands

  • stash – a quick save of your working directory

Demo

  • git init – to create repo
  • git status – showed file in staging area
  • git commit – add file
  • Edit .gitignore – to omit .class files
  • git log – see actual commit
  • git log –oneline –graph –all – list commits one line per commit so easier to read. Shows which branch the change is in
  • git checkout -b newBranch – create new branch and switch to it
  • git branches – list all branches
  • git checkout master – switch to master
  • git checkout -b branch2 – create a second branch off master
  • git merge newBranch – first merge smooth
  • git merge branch2 – created merge conflict. Fix manually
  • git branch -d newBranch – delete branch

My take: I had trouble understanding their accents at first, but then it got easier. The content itself was good. I was also a little distracted getting ready for my session next. I like that they did a live demo. I thought the content was going to be more advanced. The mention of stash was a good one. But then the demo was easy. To be fair, a bunch of people in the room didn’t raise their hands for using git. They got to the advanced part right when they ran out of time. I look forward to reading the rest of the deck at least.