<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Microservices using Petri Nets</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Sulochan Naik</string-name>
          <email>sulochan.naik@iiitb.org</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Meenakshi D'Souza</string-name>
          <email>meenakshi@iiitb.ac.in</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Workshop Proceedings</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>International Institute of Information Technology</institution>
          ,
          <addr-line>Bangalore</addr-line>
          ,
          <country country="IN">India</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2023</year>
      </pub-date>
      <abstract>
        <p>Despite higher adoption of Microservices worldwide, there is a lack of work on possible fault detection during early phases such as at requirements and design phase. We propose a novel way to detect faults using Petri nets' traversal analysis and model checking CTL specifications. Requirements of a system involving microservices are mapped to Netflix's Conductor specification which is later converted into Petri nets for further analysis and detection of faults. We tried our methodology on the TrainTicket benchmark system and were able to detect seven faults.</p>
      </abstract>
      <kwd-group>
        <kwd>Figure 1 gives complete description of our proposed methodology</kwd>
        <kwd>Based on our analysis on</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>1. Introduction
&gt; 0).
• P3 - Decentralized property can be verified by: AF(end is reached) for all microservices.
• P4 - Feasible execution path can be verified by: AF(end is reached).
• P5 - Verification of deadlock state can be done by: EF(end is not reached).</p>
      <p>
        • P6 - Bounded response time can be verified using : AG(some state) &lt; desired token.
Using our methodology, we were able to detect seven faults on a benchmark microservices
application called TrainTicket [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] which is depicted in Table 1.
nEvelop-O
      </p>
      <p>
        Microservice Errors [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]
      </p>
      <p>F1 (Messages are displayed in wrong order)
F2 (Some information displayed in a report is wrong)</p>
      <p>F4 (The response time for some requests is very long)
F5 (A service sometimes returns timeout exceptions for user requests)</p>
      <p>F7 (The payment service of the system fails)</p>
      <p>F16 (The file-uploading process fails )
F20 (Nothing is returned upon workflow data request )
Mapping</p>
      <p>P1
P3
P6
P6
P2
P2
P5
3. Conclusion and Future Work
We have verified our methodology on the train ticket benchmark system with satisfactory
results. We plan to extend this work as a part of formal verification of microservices.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Netflix</surname>
          </string-name>
          , Inc.,
          <string-name>
            <surname>Conductor</surname>
          </string-name>
          ,
          <year>2016</year>
          . URL: https://netflix.github.io/conductor/.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Microservice</given-names>
            <surname>System</surname>
          </string-name>
          <string-name>
            <surname>Benchmark</surname>
          </string-name>
          , Trainticket,
          <year>2018</year>
          . URL: https://github.com/FudanSELab/ train-ticket/.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Microservice</given-names>
            <surname>System</surname>
          </string-name>
          <string-name>
            <surname>Benchmark</surname>
          </string-name>
          ,
          <source>Train ticket fault replicate</source>
          ,
          <year>2018</year>
          . URL: https://github.com/ FudanSELab/train-ticket
          <article-title>-fault-replicate.</article-title>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>