Index
엘리스
트랜스버스

엘리스
2023.02 ~ 2023.10 산업기능요원 복무 완료
직함 : 팀원
직무 : Backend Engineer
고용 형태 : 정규직
<aside>
💡 프로젝트 명 : AI 디지털 교과서
프로젝트 목적 : 비순환 그래프 구조의 커리큘럼 로드맵을 표현하고 유저별 학습이해도를 AI로 진단하여 보여준다.
프로젝트 진행 기간 : 2023.08 ~ 2023.10
개발 사용 스택
FastAPI, PostgreSQL, Redis
상세 담당 업무
- MSA 구조로 독립된 AI 디지털 교과서 서버의 모든 API 엔드포인트를 구현하였습니다.
- 비순환 그래프 표현을 위한 DB 스키마를 설계하였습니다.
- 유저별 학습 점수 데이터를 디지털 교과서 서버에 동기화시키고 평균 이해도를 산출하는 로직을 비동기적으로 구현하였습니다.
- 데이터 팀과 협업하여 AI 기반 학습 이해도 산출을 서버에 저장하는 로직을 구현하였습니다.
해결한 이슈
- 복잡한 디지털 교과서 개념으로 비순환 그래프를 표현하는 이슈
- 다른 서버에 있는 유저 학습 점수 데이터를 가져오는 이슈
</aside>
<aside>
💡 프로젝트 명 : 학습 캘린더
프로젝트 목적 : 유저가 구독 중인 엘리스의 모든 일정을 마이페이지에서 캘린더로 확인할 수 있도록 한다.
프로젝트 진행 기간 : 2023.06 ~ 2023.07
개발 사용 스택
FastAPI, PostgreSQL
상세 담당 업무
- MSA 구조로 독립된 캘린더 서버를 설계 및 개발하였습니다.
- 독립된 서버 간 데이터 동기화를 비동기적 구현하였습니다.
- iCalendar에 호환되는 데이터베이스 스키마 구조를 설계하였습니다.
- iCalendar 구조로 일정 내보내기, 가져오기 등의 기능 확장성을 보장하였습니다.
해결한 이슈
- CDC를 사용하지 않고 서버 간 데이터를 비동기적으로 동기화 해야 하는 이슈
- 동기화 시킨 정규화 데이터를 비정규화 시켜 캘린더 일정 스키마로 변형하는 이슈
- 출석 같이 매일 반복되는 데이터에 대해 일정 데이터를 효율적으로 만드는 이슈
데이터 동기화 구조도

</aside>
<aside>
💡 프로젝트 명 : 기관 통합 검색
프로젝트 목적 : 엘리스 플랫폼의 모든 데이터에 대해서 통합 검색이 가능하도록 한다.
프로젝트 진행 기간 : 2023.05 ~ 2023.06
개발 사용 스택
FastAPI, PostgreSQL, ElasticSearch
상세 담당 업무
- MSA 구조로 독립된 통합 검색 서버를 설계 및 개발하였습니다
- Materialized View를 사용하여 데이터 변형을 수행하였습니다.
- Logstash를 사용하여 모든 데이터를 ElasticSearch로 모으는 로직을 구현하였습니다.
- 독립된 서버 간 데이터 동기화를 비동기적 구현하였습니다.
- Fuzzy Search, Pattern Matching 기능을 적용하였습니다.
해결한 이슈
- MSA로 인해 서로다른 스키마의 분산된 데이터를 통합 검색을 위한 스키마를 만족하게 변형하여 ElasticSearch로 모으는 이슈
- CDC를 사용하지 않고 서버 간 데이터를 비동기적으로 동기화 해야 하는 이슈
- RDB 구조로 인해 부모 테이블의 데이터가 수정되거나 삭제될 경우 자식 테이블에도 반영 해야 하는 이슈
- 검색 키워드가 완벽하지 않더라도 비슷한 검색 결과를 반환해야 하는 이슈
데이터 동기화 구조도


</aside>
<aside>
💡 프로젝트 명 : AI 안면인식 기반 출석부
프로젝트 목적 : 수업 진행 기간 동안 유저의 출석을 관리하고 체류 시간과 AI 안면 인식 기능으로 출석 인정을 판별하는 출석부를 만들 것
프로젝트 진행 기간 : 2023.04 ~ 2023.04
개발 사용 스택
FastAPI, PostgreSQL, TimeScaleDB, Redis
상세 담당 업무
- MSA 구조로 독립된 출석부 서버를 설계 및 개발하였습니다.
- 10초마다 쌓이는 체류 시간과 안면 인식 데이터의 효율적인 처리를 위해 시계열 데이터 처리에 유리한 TimeScaleDB를 도입하였습니다.
- 데이터 팀과 협업하여 AI 안면 인식을 하고 서버에 저장하는 로직을 구현하였습니다.
- 퇴실 시간이 되면 유저들의 출석 인정, 지각, 결석 등을 계산하는 비동기 로직을 구현하였습니다.
- QR 코드를 사용하여 오프라인에서도 출석이 가능하도록 하는 기능을 추가 개발하였습니다.
- 휴식 시간을 설정하면 해당 시간 동안은 체류 시간과 안면 인식 시간을 측정하지 않는 로직을 추가 개발하였습니다.
해결한 이슈
-
수업 진행 기간 동안 한 번에 모든 출석 데이터를 생성할 것인지에 대한 이슈
( ex. 10000명이 수강하고 1년동안 진행되는 수업 → 10000 x 365 개의 row 생성 필요 )
-
10초마다 쌓이는 체류 시간과 안면 인식 데이터를 어떻게 효율적으로 저장할 지에 대한 이슈
</aside>
<aside>
💡 프로젝트 명 : 크레딧 & 라이센스
</aside>
<aside>
💡 그 외 담당 업무
</aside>