GitHub, Jira, Slack, Notion 을 사용합니다.

  • 현재 프로젝트의 Kotlin 비율은 약 70% 입니다.
  • RxJava (2.x), Dagger (2.x) 를 사용하고 있습니다.
  • 가독성과 유지보수성이 뛰어난 아키텍처 패턴의 적용을 고민합니다. 현재 Android Architecture Component 와 RxJava 를 조합한 단방향 아키텍처를 적용하고 있습니다.

Commerce Platform

유저들이 원하는 패션 아이템을 얻을 수 있도록 만들어주는 Commerce Platform은 스타일쉐어의 주요 수익모델입니다. 유저들에게 빠르고, 쉽고, 안정적인 쇼핑 경험을 제공하기 위해 지속적으로 고민하고 개선합니다.

MSA (Micro Service Architecture)

어떻게 책임을 분리할 것인지 논의가 반복됩니다. 현실적으로 제대로된 마이크로서비스 아키텍쳐는 아닙니다. 어쩌면 새로운 파편화를 만들고 있을지 모르겠습니다. 그래서 더욱 신중합니다. 방대한 레거시 시스템과 싸우며, 안전하고 빠르게 가치를 전달하고자 합니다. 높은 응집성과 낮은 결합도를 쟁취하기 위해 끊임없이 노력합니다.

Testing자동화

Test를 작성하는 것을 장려합니다. 작성하는 과정이 순탄치 않아 힘들기도 합니다. 하지만 이를 통해 빠르고 안정적으로 사용자에게 가치를 전달할 수 있다고 생각합니다.

Legacy

Legacy가 무조건 나쁜 것은 아닙니다. 현재에도 문제가 없고, 앞으로도 문제가 없다고 판단되는 Legacy라면 굳이 청산해야 할 이유도 없습니다. 하지만 현재 Commerce Platform의 상당한 Legacy들이 StyleShare의 성장세를 견디지 못하고 있습니다. 이를 개선하기 위해 지속적으로 Legacy를 청산하는 작업을 진행하고 있습니다.

자격 요건

  • 문제 해결을 위해 여러 직군과 협업하고 논의하는 것을 좋아하시는 분
  • 개발 경력 3년 이상 또는 이에 준하는 실력을 가지신 분
  • 다음 중 한가지 이상을 사용해서 서비스를 개발해보신 분
    • Python
    • Java
    • React

    # 개발 문화

    스타일쉐어의 개발팀은 유저의 니즈와 비즈니스 요구사항을 만족시키기 위한 개발 문화를 공유하고 발전시키려 노력하고 있습니다. 세상의 문제를 실제로 해결할 때 개발자들의 존채 가치가 증명된다고 믿으며, 복잡도가 증가하는 상황 속에서 문제를 해결하는 속도를 유지하기 위해서는 팀이 성장해야 한다는 사실 또한 중요하게 여기고 있습니다.

    따라서 우리에게 필요한 역량과 기술적 고민에 대해 심도있게 토론하지만 단순히 기술자들만의 논의를 넘어, 비즈니스를 만들어가는 한 역할을 맡은 일원으로서 회사의 성장에 방향성을 맞추려 노력하고 있습니다. 이에 필요한 기술적 논의도 심도 있게 진행하려고 최선을 다하고 있습니다. 기술 블로그 운영도 이러한 노력 중 하나라고 할 수 있을 것 같습니다.

    StyleShare - Medium

    ## 백엔드 개발

    기본적으로 거대한 Monolithic 서비스를 기반으로 다양한 서비스들이 공존하고 있습니다. 각 서비스들과 통신을 할 때는 REST와 같은 규약으로 통신하고 있고, 기민함을 위해 목적별로 서비스들을 나눠 나가고 있습니다. 미션의 목표에 따라 빠른 프로토타이핑과 개발을 위해 결과물 만을 배포하기도 하고, 높은 커버리지를 가진 테스트 코드들을 작성하기도 합니다. 각각의 서비스들의 목적에 따라 강력한 정책을 요구하기도 느슨한 정책을 요구하기도 합니다.

    ## 테스트 코드

    반드시 TDD로 개발을 해야 한다거나 모든 코드를 테스트하는 커버리지를 높이는 식으로 테스트를 작성하고 있지 않습니다. 그리고 DB나 Cache와 같은 이미 신뢰도가 높은 서비스들을 mocking 하면서 까지 테스트를 작성하지는 않습니다. 테스트 코드를 작성하는 것은, 비즈니스 로직이 의도한 대로 동작하는 것을 확인하기 위함이지 코드의 완전 무결성을 높이기 위함이 아니라고 생각하기 때문입니다. 그래서 스타일쉐어는 DDD 의 아이디어에서 몇 가지를 차용하여 코드를 설계하고, 핵심 비즈니스 로직을 담당하는 도메인 모델과 응용 서비스 계층을 주로 테스트합니다.

    ## 코드 리뷰

    StyleShare의 모든 코드는 GitHub을 통해서 관리됩니다. Pull Request와 코드 리뷰를 거쳐야만 master 브랜치에 병합할 수 있습니다. 리뷰는 더 좋은 코드/설계를 위해 같이 논의하는 과정이라고 생각하고, 더 좋은 코드와 설계는 복잡한 비즈니스에 더 기민하게 대응할 수 있는 방향이라고 판단합니다. 자신이 틀릴 수 있다는 생각을 가지고 자유롭게 생각을 공유할 수 있는 분이면 좋겠습니다.

    # 어떤 사람을 찾고 있나요?

    저희는 개발자를 극단적으로 두 가지 타입으로 구분을 했는데요. 비즈니스의 성공을 위해 어떻게든 결과물을 만들어내는 엔지니어와 개발 자체에서 성과를 느끼는 사이언티스트로, 엔지니어는 기술은 도구일 뿐 유저 입장에서의 문제를 해결하는 것에 성취를 느끼는 사람이고, 사이언티스트는 개발 자체에 성과를 느끼는 사람으로 정의했습니다. 아래는 스타일쉐어의 개발자들 중 각각의 성향에 해당되는 분들에게서 뽑아낸 구체적인 예시입니다.

    ## 엔지니어

    • ATM 입금으로 무통장 결제가 불편한 유저들을 위해 ATM 용 무통장 결제 서비스를 만드는게 즐거운 사람
    • 유저들이 원하는 상품을 찾지 못해 검색엔진을 붙여 더 정확한 결과를 찾을 수 있도록 하는 기능을 구현하는 사람

    ## 사이언티스트

    • 어떤 backend 가 와도 유연하게 사용할 수 있는 Cache Interface를 만드는 게 즐거운 사람
    • SQL 쿼리 튜닝하는 게 즐거운 사람
    • 장애가 나지 않게 하는 개발이 즐거운 사람
    • 다른 프로그래머들이 사용하기 좋은 설계를 만드는 것이 뿌듯한 사람

    이번 채용에서는 사이언티스트 성향에 가까운 분을 찾고 있습니다. 모노리틱한 설계에서 MSA 설계로 변화해나가는 과정 중에서, 핵심 데이터를 가지고 대부분의 API를 제공하는 중앙 서버를 다루기도 하고, 현재 팀에서 사이언티스트향의 개발자가 부족하다고 느끼고 있기 때문인데요, 스스로 사이언티스트 성향에 가깝다고 느끼는 분은 저희가 이번 채용에서 찾고 계신 분일 확률이 높습니다!

    혹시 예시가 와닿지 않으실까봐 사이트를 하나 공유드립니다. Design Types 테스트를 해보시고, The Architect 혹은 The Scienist 가 나오신다면 저희가 찾는 성향이실 확률이 높습니다. :)

    Design Types

    # 개발 환경

    • Python2 & 3, Docker, Flask, SQLAlchemy, PostgreSQL, Celery, Redis, BigQuery 등의 도구를 이용합니다.
    • 협업은 Jira, Github, Git, Notion, Slack 등을 이용합니다.
    • 모든 서비스 인프라는 AWS위에서 동작합니다.
    • 4k 모니터와 맥북 프로를 지급합니다.

    # 지원 자격

    우대 사항은 참고로 보아 주세요.

    ## 필수

    • Python을 이용한 웹 서비스를 운영해본 분
    • PostgreSQL를 이용한 서비스를 운영해본 분

    ## 우대 사항

    • 유저의 니즈를 만족시켜주는 서비스를 개발/운영 해보신 분
    • 커뮤니티성을 띄는 서비스를 운영/개발 해보신 분
    • Docker를 이용하여 프로덕션 서비스를 운영 해보신 분
    • AWS에서 프로덕션 서비스를 운영 해보신 분
    • MSA로의 이전을 경험하거나 MSA 환경에서 개발 해보신 분
    • 테스트코드 작성이 습관이신 분
    • BigQuery 로 데이터를 추출하여 시각화 해보신 분