미리보기
기본 정보
효율적인 업무처리를 좋아합니다. IT 스타트업에서 인사팀 직원으로 재직하며 개발자들의 업무를 지켜보며 업무 자동화에 흥미를 느끼며 개발의 매력에 빠진 유선아입니다. 인사 업무 자동화를 위해 구글 시트와 슬랙을 연동하여 인사 자료를 처리하는 작업을 진행했습니다.
기술 스택
Java, Spring Boot, JPA, Node.js, NestJS, Python, MySQL, Docker, aws-ec2, aws-rds, GitHub, github-actions, Redis, TypeORM
경력
주식회사 위티
인턴 | 개발팀
2024.08. ~ 2024.08. (1개월)
주요 업무
NestJS 및 TypeORM을 사용한 퀴즈 서비스 MVP 백엔드 구축
기획의도 분석을 통해 ERD 설계 및 API 문서 작성
Python, requests, BeautifulSoup, Selenium을 활용한 데이터 수집, 가공 및 시각화
Projects
MVP 개발 프로젝트 “창업해보카”
ERD 설계 : 데이터베이스 테이블 간 관계 정의
API 명세서 작성 : 팀 내 원활한 소통을 위한 API 명세서 작성
API 개발 : 문제 조회 및 풀이 내용 저장, 문제 활성화 기능 API
CRUD API 및 테스트 코드 작성
데이터 수집 및 크롤링 자동화
Google Play Store & Apple App Store: 무료 게임 앱 데이터 100여 개 수집
BeautifulSoup & Requests: HTML 파싱 및 CSV 파일 저장
Selenium: 네이버 블로그, 브런치 스토리, 티스토리에서 수천 건의 피드 크롤링
대규모 데이터 수집 및 가공
Google Play Store & App Strore 내 게임 앱 리뷰 5만 건 크롤링
프로젝트 관리 협업툴 관련 게시글 리뷰 5만 건 크롤링
Pandas를 활용한 데이터 중복 제거 및 리뷰 데이터 최적화
샤플앤컴퍼니
매니저 | 경영지원팀
2021.06. ~ 2023.08. (2년 3개월)
주요 업무 :
회계 관리 (매출 관리, 전자세금계산서 발행, 급여지급 , 비용관리)
인사 업무 (온보딩, 입사 및 퇴사 과정 관리, 다면 평가, 자산관리)
서림통상(주)
사원 | 회계팀
2021.04. ~ 2021.06. (3개월)
주요 업무 :
세금계산서 발행, 매출계산서 및 매입계산서 입력, 입출금내역, 매출 현황 관리
프로젝트
오점머 (오늘 점심 뭐먹지?)
개인
2023.08. ~ 진행 중
서비스 링크 : https://lunch.picksay.com/
Github 링크 : https://github.com/YOOSUNAH/meal-recommendation
기술 스택 : Java 17, Spring Boot 3.1.0, MySQL8.0.35
프로젝트 설명 : 이 서비스는 점심메뉴를 고민하는 시간을 덜어주기 위해, 실제 사용자의 현재 위치를 중심으로 사용자가 선택한 카테고리(한식, 중식, 일식, 양식)의 식당을 랜덤으로 추천해주는 서비스 입니다.
주요 기능 및 구현
데이터 수집 및 저장
공공데이터 활용 : 서울 열린 데이터 광장에서, 약 50만건의 서울시 일반 음식점 정보를 수집
웹 크롤링 : Selenium WebDriver를 활용한 데이터 수집
스케줄링 : @Scheduled 어노테이션을 활용한 자동화 구현
데이터 저장 방식 :
DELETE + INSERT: 13,479ms
UPDATE: 1,017ms (약 13배 성능향상)
UPDATE 방식 채택
위치 기반 추천
사용자 위치 파악 :
Geolocation API
를 통해 사용자의 위도 경도 수집반경 200m 내 음식점 검색 :
Haversine
공식을 사용해, 사용자의 위치를 기준으로 거리를 계산추천 알고리즘:
사용자가 선택한 카테고리(한식, 중식, 일식, 양식)에 맞는 음식점 추출
필터링된 음식점 중 무작위 10개 추천
트러블 슈팅 1 - 서울시 공공 데이터 좌표계 변환 오류
문제 : 서울시 공공 데이터 좌표계와 geolocation 좌표계 차이로 인해 잘못된 위치 정보 발생
원인 :
서울시 일반음식점 인허가정보'의 좌표계는 중부원점 TM(EPSG:2097) 좌표계를 따름 UTMK 좌표계로 잘못 파악하여 좌표 변환 오류 발생
해결 : 변환 후 좌표의 위치가 크게 상이함을 통해 문제 확인 후 좌표계 정의 수정
트러블 슈팅 2 - JPA saveAll() 사용 시 중복 데이터 저장 문제
문제: JPA의 saveAll() 메서드 사용 시 모든 컬럼이 동일해야만 UPDATE가 이루어졌고, 일부 컬럼이 다르면 INSERT가 발생하여 데이터 중복 저장 문제 발생
원인: 고유 식별자가 없어 기존 데이터와 비교되지 않아 INSERT가 반복됨
해결:
"관리 번호"를 기준으로 고유 식별자를 설정하고 unique 제약 조건 추가
기존 데이터를 메모리에 로드한 후 배치 단위로 처리 (배치 크기: 5000)
성능 최적화 (30분 → 23.5초, 약 76배 개선)
결과: 중복 저장 문제 해결 및 대량 데이터 처리 성능 개선
Want it 경매 플랫폼 (나만의 애장품을 경매에 붙일 수 있는 경매 플랫폼 서비스)
내일배움캠프
2024.03. ~ 2024.04.
시연영상 링크 : https://www.youtube.com/watch?v=QvSy95vkQpo
Github 링크 : https://github.com/DCNsProjects/WantIt
기술 스택 : Java 17, Spring Boot 3.2.4, MySQL8.0.35, JWT, Refresh Token, Redis, SSE
인원 : BE 4명
프로젝트 설명 : 나만의 애장품을 경매에 붙일 수 있는 경매 플랫폼 입니다. 판매 희망 상품을 등록하면 원하는 날짜와 기간동안 경매를 진행할 수 있습니다.
담당 역할 :
로그인, 회원가입, 회원 정보 관련 CRUD, 좋아요 , 이메일 인증 코드 발송, SNS 로그인
로그인 및 회원가입
JWT를 사용하여 보안성을 향상. 사용자 요청 시 JWT를 검증하여 인증된 사용자만이 접근할 수 있도록 하여 보안성을 강화
실제 회원가입과 유사한 프로세스로 이메일 인증 코드를 발송하는 기능을 추가하여 보안성 향상
SNS 로그인을 통해 사용자의 편의성 향상
회원 정보 관련 CRUD
회원 정보 조회는 관리자 계정으로 로그인할 때에만 가능하도록 설정하여 보안성을 강화
회원 정보 수정 기능은 일반 정보와 비밀번호를 각각 수정할 수 있도록 나누어 제공하여 사용자 경험을 향상
회원 정보 삭제 기능은 탈퇴를 고려하여 구현되었으며, 실제로는 데이터베이스에서 삭제되지 않고 소프트 삭제 형태로 구현하여 데이터 보존을 유지
좋아요 및 좋아요 취소
사용자가 좋아요 한 기록을 저장하기 위해 좋아요 상태를 boolean 값으로 지정해 한 번 선택하면 좋아요를 활성화하고, 두 번 선택하면 비활성화할 수 있는 기능을 구현
트러블 슈팅1
문제: 실시간 호가 정보 전송 메서드 실패시 반복문이 종료되어 사용자가 호가 정보를 받지 못하는 문제 발생
원인: 메세지 전송을 담당하는 메서드에서 반복문을 사용하여 한 번의 실패로 전체 반복문이 종료됨
해결: 메세지 전송 메서드와 반복문을 분리하고, 병렬 처리를 위해 parallelStream()을 활용
트러블 슈팅2
문제: CORS 브라우저 정책으로 인한 HTTP 요청 제한 문제 발생
원인: 프론트엔드 서버 포트와 백엔드 서버 포트의 차이로 인해 CORS 정책에 위배되어 요청이 제한됨
해결 : 백엔드에서 WebMvcConfigurer를 상속받는 WebCorsConfig를 만듦
트러블 슈팅3
문제: 로컬 테스트시 파일 이미지 패스 생성 불가로 파일 전송 실패
원인: OS X (mac)의 파일 시스템 쓰기 권한 문제로 이미지 패스가 생성되지 않아 전송이 막힘
해결: 로컬에서 쓰기 권한이 있는 폴더만 생성
교육
숙명여자대학교
대학교(학사) | 중어중문/경영학부 (복수전공)
2016.03. ~ 2021.08. | 졸업
대외활동
SK 대학생자원봉사단 SUNNY
SK
초심자 눈높이에 맞춘 코딩 원리 봉사활동
활동목표 : 아이들에게 코딩 그 자체가 아닌, 코딩의 원리를 다양한 활동과 놀이를 통해 쉽게 익히도록 하는 것
아이들이 쉽게 흥미를 가질 수 있는 활동으로 순서의 개념을 재미있게 받아들이게 하고, 아이들의 일상생활을 통한 프로그램을 이용하며 코딩이 어려운 것이 아님을 알려주고 보다 쉽게 접근할 수 있게 하는 교육 봉사 대외활동
자격증
컴퓨터활용능력
2급 | 대한상공회의소
2021.05.
전산회계
1급 | 한국세무사회
2021.03.
TOEIC SPEAKING
LEVEL7 (Advanced Low) | 한국TOEIC위원회
2021.03.
TOEIC
880 | 한국TOEIC위원회
2021.01.
新 HSK
215점/5급 | HSK한국사무국
2019.12.
외국어
영어
비즈니스 회화 가능
중국어
일상 회화 가능
자기소개
안녕하세요, java와 spring 기반으로 공부하는 백엔드 개발자 유선아 입니다.
저는 IT 스타트업에서 경영지원 업무를 수행하며, 개발자들의 업무를 가깝게 지켜볼 수 있었고, 업무를 자동화 하는 모습에 흥미를 느껴서 개발에 입문하게 되었습니다. 경영지원 업무를 수행하며 저또한 한달의 한번씩 매번 반복되는 인사 업무를 구글 시트와 슬랙을 연동하여 알림을 받도록 처리하는 작업을 진행한 경험도 있습니다.
자동화하기 위해 스스로 개발 공부를 시작하게 되었고, 퇴사 후 본격적으로 학원을 다니며, Java와 Spring 기반으로 백엔드 개발 양성 과정에 6개월간 참여하여 수료하였습니다. 이때 팀프로젝트를 여러차례 진행하며 협업 능력 또한 향상시켰습니다. 수료 이후에는 인턴으로써 근무하며, 이전에 배운적은 없지만 업무 진행을 위해 Node와 Python을 독학하며 적극적으로 업무에 임했습니다. 이렇게 기본기를 탄탄히 다지며, 현업에서 필요한 기술과 역량을 갖추기 위해 끊임없이 노력하는 개발자입니다.