본문으로 바로가기

Mobile App SK 행복 DATA 플랫폼

SK 행복앱 kong

Vue2 운영 및 리뉴얼 개발

소중한 일상을 기록하고 공유하는 모바일 서비스

기간
2022.02–2024.12
역할
Frontend Developer · 프론트엔드 1인 담당
  • Mobile UI
  • UX/UI
  • Interaction
서비스 종료
SK 행복앱 kong모바일 UI
SK 행복앱 kong 대표 화면 1
SK 행복앱 kong 대표 화면 2
SK 행복앱 kong 대표 화면 3

At a glance

30초 안에 보는 프로젝트

행복앱 운영 및 리뉴얼을 맡아 진행했습니다.

클라이언트
SK 행복 DATA 플랫폼
기간
2022.02–2024.12
담당
Frontend Developer · 프론트엔드 1인 담당
기술
Vue 2, Vuetify 2, Vuex

Problem

해결해야 했던 문제

장기 운영 중인 Vue 서비스를 안정적으로 유지하면서 UI·기능 개선과 신규 화면 개발을 함께 이어가야 했습니다.

Ownership

내가 맡은 범위

프론트엔드 1인 담당으로 기존 화면과 데이터 흐름을 분석하고 UI 수정, 기능 개선, 오류 대응과 신규 화면 개발을 수행했습니다.

Outcome

만들어 낸 결과

장기 운영과 고도화를 같은 맥락에서 책임지며 서비스 이해도와 운영 대응 경험을 축적했습니다.

01 · Problem

문제와 프로젝트 제약

장기 운영 중인 Vue 서비스를 안정적으로 유지하면서 UI·기능 개선과 신규 화면 개발을 함께 이어가야 했습니다.

SK 구성원을 위한 통합 복지 플랫폼으로,

기존 시스템의 안정적인 운영과 함께

사용성 및 성능 개선을 목표로 리뉴얼 개발을 진행했습니다.

약 1년 5개월간 운영하며 안정성 확보와 점진적 리뉴얼을 병행한 운영형 자사 서비스입니다.

02 · Ownership

역할과 책임 범위

프론트엔드 1인 담당으로 기존 화면과 데이터 흐름을 분석하고 UI 수정, 기능 개선, 오류 대응과 신규 화면 개발을 수행했습니다.

Frontend Developer · 프론트엔드 1인 담당

  • vue2 기반 웹 운영 및 신규 기능 개발
  • vuetify2 컴포넌트 커스터마이징 및 반응형 UI 구현
  • vuex 모듈 설계 및 상태 관리
  • 불필요한 렌더링 최적화 및 성능 개선
  • REST API 연동 및 데이터 바인딩

03 · Decisions

기술적 판단과 트레이드오프

기존 동작의 영향을 먼저 확인하고 화면과 상태 관리 변경을 기능 단위로 나누어 점진적으로 반영했습니다.

  • 가상 스크롤 직접 구현

    Vuetify v-list로는 수천 건 데이터에서 스크롤이 끊기는 한계가 있어 직접 가상 스크롤 컴포넌트를 작성. 보이는 구간 + 버퍼만 렌더해 DOM 수를 수십 개로 유지.

  • Vuex 모듈 경계 정리

    장기 운영 중인 코드베이스에 신규 기능을 추가할 때 도메인 단위로 모듈을 분리해 회귀를 방지하고 책임을 명확화.

  • Axios 인터셉터 표준화

    토큰 갱신·에러 핸들링·재시도 로직을 인터셉터로 공통화. 화면 코드에서 분기 부담을 줄이고 API 흐름의 일관성을 확보.

04 · Evidence

구현 범위와 코드 근거

화면 구현에 그치지 않고 상태, 데이터 흐름, 재사용 경계를 함께 설계했습니다.

구현한 작업

  • 기존 vue2 운영형 자사 서비스 유지보수 — 운영 중 발생하는 이슈 분석·화면·구조 개선 제안·반영
  • vuex 모듈 구조 개선 및 비동기 데이터 흐름 최적화
  • 대용량 리스트 가상 스크롤 적용 및 성능 개선
  • Axios 인터셉터를 활용한 API 에러 핸들링 및 토큰 관리
  • 반응형 UI 대응 및 크로스 브라우징 지원
주요 구현 내용 (코드 예시)javascript
// components/VirtualList.js — 대용량 리스트 가상 스크롤
export default {
  props: {
    items: { type: Array, required: true },
    itemHeight: { type: Number, default: 56 },
  },
  data: () => ({ scrollTop: 0, viewportH: 0 }),
  computed: {
    start() {
      return Math.floor(this.scrollTop / this.itemHeight);
    },
    // 보이는 구간 + 버퍼만 렌더 — 수천 건도 DOM은 수십 개
    visibleItems() {
      const extra = Math.ceil(this.viewportH / this.itemHeight) + 4;
      return this.items.slice(this.start, this.start + extra);
    },
    // 잘라낸 윗부분만큼 패딩으로 스크롤 위치 보정
    offsetY() {
      return this.start * this.itemHeight;
    },
  },
  mounted() {
    this.viewportH = this.$el.clientHeight;
  },
  methods: {
    onScroll(e) {
      this.scrollTop = e.target.scrollTop;
    },
  },
};

포트폴리오 설명을 위해 NDA 범위 안에서 재구성한 코드 예시입니다. 실제 저장소 원문이나 고객사 기밀 정보는 포함하지 않았습니다.

05 · Outcome

결과와 확인 가능한 근거

장기 운영과 고도화를 같은 맥락에서 책임지며 서비스 이해도와 운영 대응 경험을 축적했습니다.

  • 프론트엔드 1인 담당
  • 2022.02–2024.12 장기 운영
  • Vue 기반 운영·고도화
  • 초기 로딩 속도 개선
  • 페이지 전환 속도 개선
  • 공통 컴포넌트 재사용률 향상

06 · Screens

주요 화면

각 화면을 선택하면 구현 결과를 더 크게 확인할 수 있습니다.

07 · Workflow

협업 흐름

요구사항을 구현 가능한 단위로 바꾸고, 운영 피드백까지 연결한 협업 과정입니다.

  1. 요구사항 접수

    고객사로부터 업무를 인입받아 기획자가 디자이너와 협의해 화면·기능 초안을 작성합니다.

  2. Figma 핸드오프

    기획·디자인 결과물을 컴포넌트 단위 구조로 분해하고 공통 컴포넌트와 페이지 전용을 구분해 구현 가능한 형태로 재해석합니다.

  3. 화면 구현 (단독)

    화면 전반을 단독으로 구현. 공통 컴포넌트 설계, 상태 관리 구조 결정, 라우팅·인터랙션 처리까지 책임.

  4. API 연동

    백엔드 개발자가 작성한 API 스펙을 인터셉터·에러 핸들링·로딩 상태와 함께 연결합니다.

  5. 운영·피드백 반영

    QA·운영 단계의 이슈를 분석하고 화면·구조 개선안을 제안·반영합니다.

Top으로 이동