Написание высокодоступного кода: 6 советов от инженера Imgur

Автор: admin от 3-10-2015, 15:28, посмотрело: 313

Написание высокодоступного кода: 6 советов от инженера Imgur


Примечание переводчика: В нашем блоге мы много пишем о построении облачного сервиса 1cloud, но немало интересного можно почерпнуть и из опыта по работе с инфраструктурой других компаний. Инженер фотосервиса Imgur Джейкоб Гринлиф (Jacob Greenleaf) опубликовл в блоге на Medium материал, в котором изложил несколько советов по созданию высокодоступного кода для отказоустойчивых систем. Мы представляем вашему вниманию адаптированный перевод этой заметки.

Я работаю в Imgur уже больше двух лет и за это время усвоил несколько принципов, которые помогают создавать отказоустойчивые системы. Часто бывает, что какая-то из наших систем «падает», и когда я прихожу утром на работу, то вижу, что сработал заранее предусмотренный «предохранитель» или сервис автоматически перезапустился после сбоя — этого удается достичь с помощью нескольких принципов проектирования. Ниже представлены некоторые из них.

Категория: Программирование » Веб-разработка

 

40 ключевых концепций информационных технологий доступно и понятно

Автор: admin от 3-10-2015, 14:11, посмотрело: 474

Представляю вашему вниманию перевод очень ёмкой, и в то же время достаточно краткой (для такого масштаба проблемы) статьи Карла Чео. Я решил, что очень хочу сделать её перевод практически сразу, как только начал читать, и очень рад, что в итоге сделал это.
Для того, чтобы сделать обучение более веселым и интересным, представляю вам перечень важных теорий и концепций информатики, объяснённых с помощью аналогий с минимальным количеством технических деталей. Это будет похоже на очень быстрый курс информатики для всех с целью просто дать вам общее представление об основных концепциях.

Важные замечания:

  • Пункты с неуказанным источником написаны мной самостоятельно. Поправьте меня, если вы заметите какие-то неточности. Предложите лучшую аналогию, если это возможно.

  • Заголовки ссылаются на соответствующие им статьи в Wikipedia. Пожалуйста, читайте эти статьи для более серьезных и детальных объяснений.

  • Аналогии — отличный способ объяснить материал, но они не идеальны. Если вы хотите по-настоящему понять перечисленные концепции, вам следует начать с фундаментальных азов и рассуждать, исходя из них.


Также зацените эту инфографику (вариант на русском), если вы просто начинающий программист.

Категория: Программирование

 

Про Garbage Collector, Unity и слабые ссылки

Автор: admin от 3-10-2015, 09:35, посмотрело: 514

Есть у меня в проекте некий интерфейс IT и factory метод типа

interface IT {}
public IT CreateT(IA a, IB b, IC c, Type concreteType)
{
    // куча говнокода, который создает объект типа concreteType, определяемого в месте вызова в рантайме.
}


Классы, реализующие IT, имеют конструкторы с разными сигнатурами, принимающими какую-то комбинацию объектов типов IA, IB или IC, поэтому с ростом количества реализаций IT, код их создания начинал пахнуть все сильнее, и, наконец, было принято решение его выкинуть и заменить простым кодом с Unity, примерно такого содержания:

private static IT CreateITInternal(IA a, Type targetType)
{
    using (UnityContainer cont = new UnityContainer())
    {
        cont.RegisterInstance<IA>(a, new ExternallyControlledLifetimeManager());
        cont.RegisterType(typeof(IT), targetType, new ExternallyControlledLifetimeManager());
        return cont.Resolve<IT>();
    }
}

(для простоты я оставлю только ссылки на IA, чтобы не загромождать код. Unity нам тут нужен только для облегчения инстанциирования объектов и мы не хотим давать ему контролировать время жизни никаких объектов, поэтому использован ExternallyControlledLifetimeManager)
Код написан, тесты написаны, все зелено, все работает, выкатывам в продакшен. И тут началось…

Категория: Программирование