Text file talks/2013/go-sreops.slide

     1  Go Language for Ops and Site Reliability Engineering
     2  
     3  Gustavo Franco
     4  Site Reliability Engineer, Google
     5  http://developers.google.com
     6  
     7  * Operations vs Site Reliability Engineering
     8  
     9  Operations
    10  
    11  - Interrupt driven
    12  - Repetitive
    13  - Hard to scale
    14  
    15  Site Reliability Engineering
    16  
    17  - Project oriented
    18  - Values automation
    19  - Focus on scale
    20  
    21  * Go Programming Language
    22  
    23  "Go is an open source programming environment that makes it easy to build simple,
    24  reliable, and efficient software." -- golang.org
    25  
    26  * Hello OSCON
    27  
    28  .play go-sreops/hello.go
    29  
    30    $ go run hello.go -help
    31    Usage of /tmp/go-build212699297/command-line-arguments/_obj/a.out:
    32      -message="Hello, OSCON!": what to say
    33    exit status 2
    34  
    35  * Programming for SRE and Ops - State of the Union
    36  
    37  - "I will just write a small throw away script for that"
    38  
    39  - "I don't want to learn a new language"
    40  
    41  - "Language X is awesome and solves everything"
    42  
    43  * Programming for SRE and Ops - Where do we go?
    44  
    45  - One liners are here to stay
    46  
    47  - Throw away scripts too so let's make them better
    48  
    49  - Think of languages you can read as a toolkit
    50  
    51  - Get very good at writing in just a few of them
    52  
    53  * Agenda
    54  
    55  - Why Go for Ops and SRE?
    56  
    57  - Go features
    58  
    59  - Go in production at Google
    60  
    61  - Go in production outside Google
    62  
    63  - Q&A
    64  
    65  * Why Go for Ops and SRE? Simple, reliable and efficient
    66  
    67  - Open Source
    68  
    69  - One binary to rule them all
    70  
    71  - No need for a Makefile, import defined dependencies
    72  
    73  - Very fast compilation
    74  
    75  * Why Go for Ops and SRE? Simple, reliable and efficient
    76  
    77  - Garbage collection
    78  
    79  - Readability is easy to achieve via gofmt
    80  
    81  - RE2 regular expressions
    82  
    83  - Testing, benchmarking and profiling built-in
    84  
    85  * Why Go for Ops and SRE? Standard library examples
    86  
    87  .link /pkg/fmt fmt
    88  
    89  .link /pkg/io/ioutil io/ioutil
    90  
    91  .link /pkg/net/http net/http
    92  
    93  .link /pkg/os/exec os/exec
    94  
    95  .link /pkg/path/filepath path/filepath
    96  
    97  .link /pkg/regexp regexp
    98  
    99  .link /pkg/strings strings
   100  
   101  .link /pkg/text/tabwriter text/tabwriter
   102  
   103  .link /pkg/time time
   104  
   105  [[https://pkg.go.dev/][pkg.go.dev]] to your needs beyond the standard library
   106  
   107  * Why Go for Ops and SRE? Concurrency via Goroutines
   108  
   109  .play go-sreops/goroutines.go
   110  
   111  * Why Go for Ops and SRE? Concurrency and Channels
   112  
   113  .play go-sreops/goroutines-channels.go /START/,/STOP/
   114  
   115  * Go features
   116  
   117  - Hashes or dicts? Maps
   118  
   119  - Arrays? Yes, but you will probably want to use Slices instead
   120  
   121  - Modules are called Packages
   122  
   123  - Structs
   124  
   125  - Methods
   126  
   127  - Pointers without arithmetic operations
   128  
   129  Go grows with you - see interfaces and reflection
   130  
   131  * Go in production at Google
   132  
   133  dl.google.com - OSCON talk by Brad Fitzpatrick Friday, 10:00am
   134  
   135  .link http://code.google.com/p/vitess Vitess
   136  
   137   vtocc: front-end to MySQL that improves scalability
   138  
   139  .link http://code.google.com/p/emtail Emtail
   140  
   141   Whitebox monitoring data from logs to a timeseries database
   142  
   143  .link http://code.google.com/p/go-commander Go Commander
   144  
   145   Command line library for Go
   146  
   147  Machine lifecycle management
   148  
   149  via App Engine
   150  
   151  * Go in production outside Google
   152  
   153  .link http://labix.org/pipe Pipe
   154  
   155   Unix-like pipelines for Go
   156  
   157  .link http://www.gocircuit.org Gocircuit
   158  
   159   Inter host Goroutines
   160  
   161  .link http://juju.ubuntu.com Juju
   162  
   163   Service orchestration management tool
   164  
   165  .link http://www.docker.io Docker
   166  
   167   Containers management tool
   168  
   169  .link http://www.packer.io Packer
   170  
   171   Tool for creating identical machine images for multiple platforms
   172  
   173  * Q&A
   174  
   175   Take the tour - [[tour.golang.org]]
   176  

View as plain text