
=head1 NAME



OpenTracing::Manual - A quick overview about Perl5 and OpenTracing



=head1 WARNING



The C<OpenTracing> module on CPAN is B<NOT COMPLIANT> with anything remotely to
L<OpenTracing.IO|https://opentracing.io> or the L<OpenTracing::Interface>.

B<DO NOT USE THE OPENTRACING PACKAGE>



=head1 DESCRIPTION



This Manual is a quick overview of what is available in Perl related to the
OpenTracing API related Interface Definition.

This manual targets three different audiences:

=over

=item Application developers and Devops

Those that want to add instrumentation and tracing to their appilication or
micro services.

See L<OpenTracing::Manual::Instrumentation>.

=item Framework or Integration Developers

Those writing integrations for frameworks, such that those can easily extract
tracing information from incoming request or inject that into outgoing requests.

See L<OpenTracing::Manual::Integration>.

=item Tracing service Implementation providers

Those that want to have the Perl Implementation communicate with their tracing
service provider.

See L<OpenTracing::Manual::Implementation>.

=back



=head1 INTRODUCTION TO DISTRIBUTED AND OPENTRACING



From the OpenTracing IO website:

OpenTracing is comprised of an API specification, frameworks and libraries
that have implemented the specification, and documentation for the project.
OpenTracing allows developers to add instrumentation to their application code
using APIs that do not lock them into any one particular product or vendor.

Distributed tracing, also called distributed request tracing, is a method used
to profile and monitor applications, especially those built using a
microservices architecture. Distributed tracing helps pinpoint where failures
occur and what causes poor performance.

See also: L<OpenTracing Overview|https://opentracing.io/docs/overview/>.

For a very condensed overview of how to use OpenTracing see:
L<OpenTracing::Interface/SYNOPSIS>



=head1 THE OPENTRACING ECOSYSTEM FOR PERL



Included is a list of Perl Modules and those that are on the horizon, see the
L<OpenTracing::Manual::Ecosystem>.

=over

=item L<OpenTracing::Manual::Ecosystem/"The OpenTracing API Specification">.

The specification itself, and related modules.

=item L<OpenTracing::Manual::Ecosystem/"Frameworks and Integrating OpenTracing">.

Distributed Tracing is all about connecting services and microservices together,
the following modules will handle the edges of the application and services and
bootstrap tracer implementations.

=item L<OpenTracing::Manual::Ecosystem/"Instrumenting a Application">.

Once an application is running and the framwork has taken care of most of the
bootstrapping, the following modules help to can more detailed spans.

=item L<OpenTracing::Manual::Ecosystem/"Implementations">.

A list of various Implementations that are compliant with the OpenTracing API.

=item L<OpenTracing::Manual::Ecosystem/"Development and Testing">.

Modules that might be of interest when developping integrations or
implementations.

=item L<OpenTracing::Manual::Ecosystem/"Planned work">.

The following modules will be needed for easier instrumentation of an
application or better framework integration and distributed tracing.

=item L<OpenTracing::Manual::Ecosystem/"The Roadmap">.

Since all the work has been done for Peceptyx, no further development will be
done on the following, unless ...

=back



=head1 SEE ALSO



=over

=item L<OpenTracing::Interface>

A role that defines the Tracer interface.

=item L<OpenTracing::Manual::Instrumentation>

For Application developers and Devops.

=item L<OpenTracing::Manual::Integration>

For Framework or Integration Developers

=item L<OpenTracing::Manual::Implementation>

For Tracing Service Implementations

=item L<OpenTracing::Manual::Ecosystem>

An overview of the OpenTracing puzzle pieces.

=item L<OpenTracing Overview|https://opentracing.io/docs/overview/>

The OpenTracing API standard.

=back



=head1 AUTHOR



Theo van Hoesel <tvanhoesel@perceptyx.com>



=head1 COPYRIGHT AND LICENSE



'OpenTracing API for Perl' is Copyright (C) 2019 .. 2020, Perceptyx Inc

This library is free software; you can redistribute it and/or modify it under
the terms of the Artistic License 2.0.

This library is distributed in the hope that it will be useful, but it is
provided "as is" and without any express or implied warranties.

For details, see the full text of the license in the file LICENSE.
