{
    "componentChunkName": "component---src-templates-tag-page-js",
    "path": "/tag/architecture",
    "result": {"data":{"site":{"siteMetadata":{"title":"Solid Abstractions","siteUrl":"https://solidabstractions.com","twitterId":291334023,"author":{"fullName":"Julien Hartmann","profileHtml":"I am an open-source de­vel­op­er, for­mer IT con­sul­tant with a pas­sion for new tech­nol­o­gies. I be­lieve the role of an en­gi­neer is to em­pow­er peo­ple, by as­sem­bling sim­ple, re­fined de­signs.\n","links":[{"url":"https://github.com/spectras/","name":"github","title":"GitHub"},{"url":"https://stackoverflow.com/users/3212865/spectras","name":"stackoverflow","title":"StackOverflow"},{"url":"https://www.linkedin.com/in/julienhartmann/","name":"linkedin","title":"LinkedIn"}],"profilePicNode":{"original":{"src":"/static/profile-pic-301a9cbe7b572c3e7910c9717d2b3bcd.jpg"}}}}},"tag":{"name":"architecture","slug":"/tag/architecture"},"posts":{"edges":[{"post":{"excerpt":"Remaining ports are much simpler in their scope, and in the fact they do not manage\ndynamic subscriptions. We will review them quickly for completeness.","fields":{"slug":"/2018/cryptomate/other-strategy-ports"},"frontmatter":{"title":"Other Strategy Ports","date":"2018-11-13T00:00:00.000Z","formattedDate":"13 November, 2018"},"tags":[{"name":"architecture","slug":"/tag/architecture"},{"name":"ports","slug":"/tag/ports"}]}},{"post":{"excerpt":"In the “modules and components” post, we defined the trading port as a gateway\nto exchanges, managing a trading account, placing and canceling orders.","fields":{"slug":"/2018/cryptomate/trading-port"},"frontmatter":{"title":"Trading Port","date":"2018-10-20T00:00:00.000Z","formattedDate":"20 October, 2018"},"tags":[{"name":"architecture","slug":"/tag/architecture"},{"name":"ports","slug":"/tag/ports"}]}},{"post":{"excerpt":"So far, we have been talking about market events, orders and strategies, as\nabstract concepts, leaving details to a later point. Now, to design the core of\nthe strategy engine, we need the full picture.","fields":{"slug":"/2018/cryptomate/market-port"},"frontmatter":{"title":"Market Port","date":"2018-10-09T00:00:00.000Z","formattedDate":"09 October, 2018"},"tags":[{"name":"architecture","slug":"/tag/architecture"},{"name":"ports","slug":"/tag/ports"}]}},{"post":{"excerpt":"We used most of the allocated design time, and our architecture is falling into place.\nSpending more time on upfront design will yield diminishing returns at this point.\nHere is a quick post index.","fields":{"slug":"/2018/cryptomate/the-story-so-far"},"frontmatter":{"title":"The Story So Far","date":"2018-09-12T00:00:00.000Z","formattedDate":"12 September, 2018"},"tags":[{"name":"architecture","slug":"/tag/architecture"}]}},{"post":{"excerpt":"We detail critical parts of the architecture: relationships between main\ncomponents, strategy life-cycle and integration examples for both testing and production.","fields":{"slug":"/2018/cryptomate/critical-points"},"frontmatter":{"title":"Critical Points","date":"2018-09-09T00:00:00.000Z","formattedDate":"09 September, 2018"},"tags":[{"name":"architecture","slug":"/tag/architecture"}]}},{"post":{"excerpt":"Event-driven, hexagonal, micro-services… we can quickly trim down the options to a few\ncandidates. We will then explore, evaluate and select one of them.","fields":{"slug":"/2018/cryptomate/exploring-patterns"},"frontmatter":{"title":"Exploring Patterns","date":"2018-08-20T00:00:00.000Z","formattedDate":"20 August, 2018"},"tags":[{"name":"architecture","slug":"/tag/architecture"},{"name":"pattern","slug":"/tag/pattern"}]}},{"post":{"excerpt":"We understand the problem and can start building our high-level architecture. We will start\nwith mapping the requirements to project elements.","fields":{"slug":"/2018/cryptomate/modules"},"frontmatter":{"title":"Modules and Components","date":"2018-08-08T00:00:00.000Z","formattedDate":"08 August, 2018"},"tags":[{"name":"architecture","slug":"/tag/architecture"}]}},{"post":{"excerpt":"Constraints, functional requirements, quality attributes. All of those are known as\narchitecturally significant requirements. Characterizing those is the final step\nin our initial “understand phase”.","fields":{"slug":"/2018/cryptomate/requirements"},"frontmatter":{"title":"Requirements and Quality Attributes","date":"2018-08-06T00:00:00.000Z","formattedDate":"06 August, 2018"},"tags":[{"name":"architecture","slug":"/tag/architecture"}]}},{"post":{"excerpt":"We will start our job with identifying all stakeholders we can. Then, depending on how close\nto the project they are, we will get to know them and find out their goals.","fields":{"slug":"/2018/cryptomate/stakeholders"},"frontmatter":{"title":"Stakeholders and Goals","date":"2018-08-03T00:00:00.000Z","formattedDate":"03 August, 2018"},"tags":[{"name":"architecture","slug":"/tag/architecture"}]}},{"post":{"excerpt":"A new project with no legacy to accommodate may either be a clean slate or a blank page,\ndepending on how one looks at it. Before we start filling it, we need to define our strategy.","fields":{"slug":"/2018/cryptomate/getting-started"},"frontmatter":{"title":"Getting Started","date":"2018-07-30T00:00:00.000Z","formattedDate":"30 July, 2018"},"tags":[{"name":"architecture","slug":"/tag/architecture"}]}}]},"tags":{"edges":[{"tag":{"name":"architecture","slug":"/tag/architecture"}},{"tag":{"name":"c++","slug":"/tag/c"}},{"tag":{"name":"code","slug":"/tag/code"}},{"tag":{"name":"pattern","slug":"/tag/pattern"}},{"tag":{"name":"ports","slug":"/tag/ports"}},{"tag":{"name":"testing","slug":"/tag/testing"}}]}},"pageContext":{"slug":"/tag/architecture"}},
    "staticQueryHashes": ["1733002695","4006707078"]}