Toru Masuda strong> div>
It is not a proven pattern, but it also includes what Mr. Masuda himself practiced and the story that he has not practiced it but this may work.
Excerpt from Presentation Material
The technologies to realize microservices are ready.
- Cloud
--Container
--Design skills
⇒ How to divide the software to make it extensible
These are necessary conditions, not sufficient conditions.
This time I will talk about design skills
Excerpt from Presentation Material
4 motives for microservices
・ Distributed by load balancer
load distribution
Risk diversification
Data distribution
・ Cooperation of different services
Function distribution
This time I will talk about the functional distribution part
Excerpt from Presentation Material
・ Mr. Masuda's basic approach when thinking about MSA
Make with monolith → Module improvement
↓
Examining the possibility of MSA (considering partial application)
↓
Consideration of transition (considering partial application)
・ The basics of design skills are the same for monoliths and microservices.
Separation of concerns
High aggregation / loose coupling
modularization
⇒ Can be used for both monoliths and microservices
Schematic diagram of service
Excerpt from Presentation Material
・ Same for monoliths and one microservice
There is inbound and there is outbound
Obtained from DB or other services via data source
-In MSA, asynchronous processing is often used more naturally than in monolith, such as receiving asynchronously and sending asynchronously, subscribing asynchronously and publishing asynchronously. Asynchronous is a technology that has been used for a long time. The cloud messaging service makes it easier to do.
Asynchronous messaging technology has been around for a long time, but the threshold for building and operating mq on your own for large apps was high, making it easier to use in the cloud, and as a result asynchronous. Messaging has become more commoditized than it used to be.
How small can it be
Excerpt from Presentation Material
-Theoretically, each method of Java API.
There used to be RMI (Remote Method Invocation). I tried to do it on a method-by-method basis, but it didn't work very well.
There used to be CORBA.
・ The limit is cloud / container / design / operation proficiency
Disperse to some extent while gaining experience, and proceed to the next step while mastering. It depends on the proficiency level and experience value of cloud / container / design / operation skills.
How small
Excerpt from Presentation Material
-Logical module division
Even a monolith can be actively divided, and it can be bold because it is a monolith.
Communication between MSAs
8 misunderstandings and truths
Excerpt from Presentation Material
Source: Fallacies of Distributed Computing Explained
There is a hole ⇒ There is always some kind of security hole.
4 split approaches
Excerpt from Presentation Material
What are the four cuts?
- Divided by business function (business function)
- Verbs / use cases (user stories may also be here)
- Nouns / resources (such as data modeling)
- Domain Driven Design (DDD)
Division by business function
Excerpt from Presentation Material
Divide the sales process into 21. That's about this number.
Excerpt from Presentation Material
・ Large corporate illness is brought in as it is.
・ For large companies: Siloing by dividing departments according to business functions
・ For small and medium-sized enterprises: Functions are divided, but since there are few people, they also serve concurrently.
・ Does it work if it matches the "scope of work from here to here" that the user says?
・ Business function and organization are one big theme
・ It can be divided according to the human process, but it becomes an issue when cooperation in the opposite direction is required.
Verbs / use cases
Excerpt from Presentation Material
・ Traditional way even with monoliths
・ Easy to divide as functional requirements and development scope
-Logic duplication and fragmentation are likely to occur. For example, if different teams make sales and billing ...
It becomes a transaction-based microservice
Logic duplication and fragmentation are likely to occur between services
Domain logic such as branching conditions is divided
・ Batch increases. It often happens that inconsistencies are detected in a nightly batch, or that the status should have been changed so far, but the batch is consistent.
・ Countermeasure: Thin use case service
Divide and organize logic by area
Eliminate duplication and fragmentation
This is called by multiple use case services
Excerpt from Presentation Material
Resource oriented
Excerpt from Presentation Material
・ Different interests are mixed and tend to be bloated. The image of bloating by giving various information to the customer number.
World of identification numbers
A mixture of different concerns and bloat
⇒Initially small customers have increased to hundreds of items
・ MSA is a world where JOIN cannot be done and foreign key restrictions do not work.
・ I think that the monolith has too much information in the identification number. Is it necessary to separate management units? Concerns need to be separated.
・ The way of thinking with a monolith may be the opposite. Maybe even the same ID should be separated
DDD
do not know! (Lol)
Excerpt from Presentation Material
-Evans-style Domain Driven Design and [Vernon-style Domain Driven Design](https://www.amazon.co.jp/dp/ In 479813161X), the relationship between context and subdomain is different.
・ The impression that the Evans book has more information on how to design.
・ Definition of Evans style
Bounded context
Scope of team communication
Source, DB schema, etc.
・ Subdomains change ⇒ It is dangerous to divide by subdomain.
Bounded context
Target
One model in one context
I will consider which one to defeat
Whether to keep the model one
Whether to split the context
Domain Driven Design "Model"
Excerpt from Presentation Material
・ Model ≒ business rules
(It's not an accurate interpretation, but it's generally correct. If you interpret it like this, you can see what Evans is saying.)
・ It is a very effective approach to divide services by business rule area.
Transaction decomposition pattern
Excerpt from Presentation Material
・ Please look for the material for details.
⇒ I was told, so I searched for a little.
-
VETRO
-
・ [Introduction of Camel design patterns](https://rheb.hatenablog.com/entry/camel-design-patterns)
⇒ VETRO pattern
-[How to apply Camel's VETRO pattern in microservices](https://qiita.com/jian-feng/items/2ebaf103e50a24f8cfcc)
-
saga
-
・ [Introduction of Camel design patterns](https://rheb.hatenablog.com/entry/camel-design-patterns)
⇒ Saga pattern
-[I tried to summarize microservice transactions with TCC pattern and Saga pattern](https://qiita.com/nk2/items/d9e9a220190549107282)
⇒ Saga pattern
· [About the Saga pattern of microservices
](https://qiita.com/yasuabe2613/items/b0c92ab8c45d80318420)
・ [Transactions in microservices [Saga]](https://www.techscore.com/blog/2018/12/05/saga-in-microservices/)
-
Asynchronization of state update (EH-SM-DSQ)
-
I couldn't find anything useful when I googled,
- EH:Event History
- SM:State Materialize
- DSQ:Domain Specific Query
So, I understood that it is a pattern to record events as a history and divide queries according to purpose.
-One transaction so far is too big for microservices.
・ Abandon the stereotype that "speaking of order registration, it is one transaction." Is that really the case? Can it be divided?
All session titles, material links and twitter
Hashtag for the entire event: #jjug_ccc
10:00-10:45
11:00-10:45
12: 00-12: 45 (lunch session)
title |
Presenter |
twitter |
JJUG lunch session |
Yusuke Suzuki |
|
Development environment and application infrastructure in the Cloud Native era(Temporary) |
Nobuhiro Sue |
|
13:30-14:15
14:30-15:15
15:45-16:30
16:45-17:30
17:45-18:30
The blogs of the people who participated
・ I participated in JJUG CCC 2019 Spring #jjug_ccc
https://www.grimrose.org/blog/2019/05/jjug-ccc-2019/
・ I came to JJUG CCC 2019 Spring #jjug_ccc
https://takeda-san.hatenablog.com/entry/2019/05/19/134053
・ Participated in "JJUG CCC 2019 Spring"
http://makopi23.blog.fc2.com/blog-entry-317.html
・ JJUG CCC 2019 Spring (#jjug_ccc) --List of session materials
https://yujisoftware.hatenablog.com/entry/2019/05/19/040112
・ 2019-05-18JJUG CCC 2019 Spring #jjug_ccc
https://note.mu/suwash/n/n5f5937986b25
・ [JJUG CCC 2019 Spring] Advance development! Clean Architecture — Speaking under the title of New Development Starting from Zero
https://nrslib.com/event-after-jjug-ccc-2019-spring/
・ I participated in JJUG CCC 2019 Spring (#jjug_ccc)
https://chichi1091.hatenablog.jp/entry/2019/05/18/224111
・ I went to JJUG CCC 2019 Spring
https://yachiy.hatenablog.com/entry/2019/05/18/221734
・ I talked for 20 minutes at JJUG CCC 2019 Spring #jjug_ccc # ccc_m5b
http://tadashi.hatenablog.com/entry/2019/05/18/201644
・ Honda Yoshitaka / ccc_a6.md
https://gist.github.com/hondaYoshitaka/3eccf0686e9988e70c3a07cc9071809c#file-ccc_a6-md
・ Record of JJUG CCC 2019 Spring
https://miyakawataku.hatenablog.com/entry/20190520/1558358694
・ We took the stage at JJUG CCC 2019 Spring
https://www.project-respite.com/jjug-ccc-2019-spring/
・ Toru Masuda I couldn't go to listen to "Microservices 4 division approach", but I was told so I will summarize it #jjug_ccc
https://taichiw.hatenablog.com/entry/2019/05/20/190605
・ I went to JJUG CCC 2019 Spring #jjug_ccc
https://kntmr.hatenablog.com/entry/2019/05/18/223621
・ At JJUG CCC 2019 Spring, we announced the test while making various efforts! # jjug_ccc # ccc_e4
http://nihonbuson.hatenadiary.jp/entry/2019/05/20/080000
・ I went to JJUG CCC 2019 Spring
https://itatyo.hatenadiary.jp/entry/2019/05/20/095324
・ Summary to explain in an easy-to-understand manner to those who misunderstand "Java paid"
https://togetter.com/li/1343743
・ JJUG CCC 2019 Spring Sponsorship / Stage Report
https://engineering.linecorp.com/ja/blog/jjug-ccc-2019-spring-report/
・ I participated in JJUG CCC as a volunteer staff! !!
http://acro-engineer.hatenablog.com/entry/2019/05/22/120000
・ JJUG CCC 2019 Spring Fellowship LT
http://www.tomokosugimoto.net/drum/other/jjug_ccc/index.html
last
We will update as needed when materials are added