Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Maintainers: Сумин
Python XSLT Other
Tag: 2.17.10

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
debian
frontik
production
scripts
tests
.gitignore
MANIFEST.in
README.md
dev_run.py
fetchurl.uml
frontik.cfg.ex
frontik.zargo
frontik_dev.cfg.ex
frontik_srv.py
frontik_srv.sh
request_response.uml
run_bamboo_tests.sh
run_frontik.sh
setup.py
version-migration-guide.md

README.md

What is Frontik?

Frontik is a simple xml aggregator for Yandex-like page generation workflow.

Frontik is developed and mantained by me (Andrey Tatarinov, elephantum@yandex.ru) while working at hh.ru as a part of infrastructure development tasks.

How does it work?

user   frontik   backend1 backend2 ...
====   =======   ======== ========
  |       |         |        |
  |------>|         |        |
  |       |         |        |
  |    (initiate requests)   |
  |       |-------->|        |
  |       |---------+------->|
  |       |----------------------->...
  |       |         |        |
  |    (wait)       |        |
  |       |<-----------------------...
  |       |<--------|        |
  |       |<--------+--------|
  |       |         |        |
  |    (xsl)        |        |
  |       |--\      |        |
  |       |  | xsl  |        |
  |       |<-/      |        |
  |       |         |        |
  |    (done)       |        |
  |<------|         |        |
  |       |         |        |

Typically page generation process is split into several steps:

  1. initiate requests: frontik makes several http-requests to underlying backends.
  2. wait for either response or timeout for each backend request
  3. aggregate everything we got into one xml document, apply given xsl transformation
  4. return the result of transformation to user.

Where is it used?

  • Some of the pages of hh.ru are served using frontik
  • hh.jsx.ru is served entirely using frontik, with sources available.
Something went wrong with that request. Please try again.