참가한 세션

  1. '더' 잘 읽히고 자연스러운 이미지 번역을 위해(파파고 텍스트 렌더링 개발기)
  2. 눈으로 보며 듣는 음성 기록, 클로바노트 서비스의 웹 기술 톺아보기
  3. UI 빌더를 지탱하는 레고 블록 같은 아키텍처 만들기
  4. 상황에 맞는 취향 장소 발견하기. HyperLocal 추천 시스템 A to Z
  5. SCDF로 하루 N만곡 이상 VIBE 메타 데이터 실시간으로 적재하기!
  6. SSR환경에서의 Micro-Frontend 구현과 퍼포먼스 향상을 위한 캐시전략

 

'더' 잘 읽히고 자연스러운 이미지 번역을 위해(파파고 텍스트 렌더링 개발기)

  • 파파고 텍스트 : 텍스트가 포함된 이미지 내에 번역된 텍스트가 제공되는 서비스
    • 렌더링 순서
  • 해당 서비스를 이용하면서도 어떤 과정을 거치는지 궁금했는데 컨퍼런스를 통해 설명을 들을 기회가 생겨 좋았습니다.
  • 포토 에디터 프로그램을 이용해 오브젝트를 지우고 자연스러운 배경이미지를 그려본 기억을 상기시키며 참여하면 더욱 재밌게 들을 수 있습니다.

 

눈으로 보며 듣는 음성 기록, 클로바노트 서비스의 웹 기술 톺아보기

  • 클로바노트 : 회의나 토론회 등의 여럿이서 참여하는 모임이 있을 때, 클로바노트를 이용해 녹음하면 발화자를 구분해 텍스트로 바로 제공해주는 서비스
  • 클로바노트를 자주 이용했던 유저로 관심이 있어 참여.
  • 오프라인 지원
    • 오프라인으로 녹음을 해도 해당 서비스를 이용할 수 있습니다.
  • 마우스 클릭/ 손가락 터치를 분기해 반응형 UX 제공
  • 코로나 시국으로 인해 비대면 회의가 늘어나면서 ZOOM서비스와도 연동
    • 라이브 스트림을 통해 유튜브 생방송처럼 실시간 서비스를 제공. 사용자의 편의성↑
  • 모노레포로 프론트엔드 프로젝트 구조를 구축해 효율적으로 코드 관리
    • 모노레포 : 관련없는 프로젝트를 단일 리포지토리에서 관리하는 방법
      • 반복적인 환경 셋팅과 코드 중복 최소화 가능
      • 패키지 버전관리 용이
      • 코드 리뷰에 용이
  • 아토믹이라는 디자인 패턴 이용해 컴포넌트 관리
    • 원자, 분자, 유기체라는 용어등을 이용해 가장 작은 단위인 기본 컴포넌트와 복합된 컴포넌트 등으로 나누어 재사용을 최대화하는 디자인 패턴
  • 상태관리는 리코일 사용
    • kui-coke도 리코일을 사용하고 있어서 익숙했던 개념
  • 저에겐 어려운 개념이 많이 나와서 챌린지 하는 기분으로 들었던 컨퍼런스입니다.
  • 프론트엔드개발자로서 FE 프로젝트 관리와 프로젝트 구조를 들을 수 있어서 의미 있었습니다.

 

UI 빌더를 지탱하는 레고 블록 같은 아키텍처 만들기

  • 프론트엔드의 아키텍처에 관심이 있어 참여
  • 프로젝트를 진행하면서 차근차근 아키텍처를 정리하며 발전해나가는 모습이 인상깊었습니다
  • 경험에서 온 아키텍처 방법이었던것을 보며 많이 배웠습니다.

 

상황에 맞는 취향 장소 발견하기. HyperLocal 추천 시스템 A to Z

  • 사용자의 더욱 만족스러운 검색결과를 제공하는 것이 목표
  • HLP Engine을 이용해 사용자의 취향에 맞는 장소를 검색
    • HLP Engine: 1. 지역을 국소화 하고(HyperLocal), 2.개개인의 취향(Personalization)에 맞는 검색결과를 제공하는 장소 검색 엔진
    • HLP Engine의 구성 요소 : 추천 대상, 추천 방식
      • 추천 대상이 흥미를 갖는 대상, 그 대상을 찾는 다른 이용자들, 컨텐츠, 공통 테마 를 분석해 추천 장소 제공
  • HLP Engine의 추천 단계
    1. 지역별 특색메뉴 : 지역별로 인기있는 장소를 추천
    2. 연령대/성별 : 사용자의 특성을 분석해 장소를 추천
    3. 개인화 : 사용자의 좋아요, 리뷰, 저장한 장소를 분석해 취향에 맞는 장소를 추천
    4. 함께 가볼만한 장소 : 사용자가 놓인 상황에 맞춰 장소 추천
  • 딥 러닝을 이용한 추천 시스템을 갖춥니다.
  • 사용자가 검색한 장소에 어울리는 다른 장소들도 추천해 특정 장소 이후의 계획에도 도움
  • 해당 사용자가 방문하는 장소를 찾는 다른 유저들을 분석해 유사한 유저들을 가려냅니다
    • 사용자가 follow하는 장소들을 유사하게 follow한 다른 유저들
    • 실제 방문 장소가 유사한 경우
    • 최근 방문한 장소가 유사한 경우
  • conference 리뷰
    • AI와 딥러닝에는 역시 다양한 수학공식들이 이용되는 것 같습니다.
    • 지식이 짧아 이해하진 못했지만 아주 흥미로웠고 개발자로서의 미래에 대해 더욱 생각해볼 수 있었던 시간이었습니다.

 

SCDF로 하루 N만곡 이상 VIBE 메타 데이터 실시간으로 적재하기!

  • 대용량데이터를처리하는2가지방식
    1. 데이터를 다루는방식
      • 배치
      • 스트림
    2. 더 많은 데이터를 처리하는 방식
      • 부하분산
      • 파티셔닝
  • 일반적인 스트림은 Naver VIBE에서 음악을 적재하기 용이하지 못한 방법
  • 레거시전환계획과전략
    • 대량 데이터를 배치방법과 젠킨스 배포로 감당하기 어려움
    • 다음을 고려해 다른 방법을 고안해야한다.
      • 현재시스템의개발/운영하는방식에어떤 문제점이있는가
      • 새롭게개발하면서우리가얻고자하는가치는무엇인가
      • 어떠한기준을가장우선순위에두고아키텍처를설계할것인가
      • 어떤데이터저장소를사용하는게적합한것인가
      • 어떤 구현방식으로개발해서구축할것인가
    • dual write 방식을 이용해 레거시 서버와 새로운 서버를 하나의 서비스를 제공할 수 있도록 관리
    • RDBMS를 no SQL인 MongoDB로 마이그레이션해 관리
  • SCDF스트림구조와설계
    • SCDF: Spring Cloud Data Flow - 스트리밍 배치 데이터를 처리하기 위해 파이프라인을 구축하기 위한 도구이다.
    • DAG 그래프 방식으로 설계
      • 반복과 순환 허용하지 않음
      • 애플리케이션간의 순환 실행을 방지
    • 팬인 팬아웃 설계 측정
      • 모듈을 계층적으로 분석하거나시스템 복잡도를측정하는기법
  • 대용량을 처리하는 방법에 관심이 있어 참여하게 되었습니다.
  • 어려운 개념을 쉽게 풀어 이해가 쉬웠습니다.

 

SSR환경에서의 Micro-Frontend 구현과 퍼포먼스 향상을 위한 캐시전략

  1. Monolithic Frontend 의 한계
    • 쿠팡과 같은 상업적 목적의 사이트
      1. 여러개의 위젯으로 구성 된 view
      2. 위젯별로 제공되는 다양한 옵션
      3. 간단히 페이지를 생성할 수 있음
      4. 다양한 목적
    • 이와 같은 이유로 수요가 늘어나면서 신규 기능 개발 요구도 증가
    • 외부 팀으로 부터 신규로 개발이 진행되면서 관리가 어려워짐
  1. Micro-Frontend (MFE)
    • MFE의 기본 구조
      • 컨테이너 중심으로 파트 통합
      • 인터페이스 기반으로 느슨한 결합
        • 직접적 참조가 없음
      • 각 마이크로 프론트엔드의 번들을 독립적으로 배포
        • 컨테이너 프론트엔드가 결론적으로 번들을 통합
  • 통합 방법
    • 런타임, 원격, 동적
  1. Module Registry
    • 모듈 개발/ 배포 프로세스의 탈 중앙화
      • 플랫폼 관리 기능은 중앙에서 컨트롤
    • 중앙에서 컨트롤할 때 장점
      • 버전 변경 이벤트를 컨테이너 서버에 실시간으로 발행
      • 배포 히스토리 및 메타데이터 관리
      • UI통해 손쉽게 배포 및 롤백
      • AB test 프레임웍과 통합해 test 및 점진적 배포
  1. MFE를 위한 캐시전략
    • 캐시 저장 공간
      • 키 캣수
      • 키당 사이즈
      • 여러 서버인스턴스 사이의 캐시 공유 범위
      • 네트워크 레이턴시
    • 위의 상황 고려해 공간 선택