Untitled

Android Developer

✅ 안녕하세요! 도전과 화합, 공유할 줄 아는 개발자, 박진수 입니다.

✅ 도전에서 Why 라는 질문으로 성장하고 확장하는 과정을 즐깁니다.

✅ 화합으로 시너지를 내는, 같이하고 싶은 사람이기 위해 노력합니다.

✅ 공유하고 함께 발전하는 과정에서 즐거움을 느낍니다.

✅ Test 및 Clean Code 에 대해 꾸준히 고민하고 더 좋은 코드를 위해 노력합니다.

Channel

Email : [email protected]

Github : https://github.com/jinsu4755

Blog : https://antilog.tistory.com/


Skills

Android Develop

Back-End Develop

Collaboration & Tools

기타 학습 기술

Project

🔎 2022~2023

Untitled

2023.06 ~

Server-United

sparkle - 연인 간 짜릿한 승부를 통한 소원권 내기 서비스

역할 : Spring Boot Back-end 및 DevOps 구축

→ 전국 대학생 연합 IT 벤처 창업 동아리 SOPT 3주 장기간 해커톤 프로젝트

→ 기획 2명, 디자인 3명, Android 4명, iOS 4명, Back-end 3명

→ Spring boot, Java, groovy, MySQL, AWS EC2, AWS RDS, AWS CodeDeploy, Nginx, GithubAction


[ 데이터 주도 방식이 아닌 도메인 중심 설계 시도 ] 초기 서비스를 구축하는 만큼 데이터베이스 주도 설계를 하는 경우, 구현 요구 사항이 변경되는 경우 변경에 구조가 많이 무너지는 것을 경험했습니다. 따라서 기획자가 정의한 도메인 지식을 바탕으로 설계를 하고자 노력하였습니다. 실제로 DDD의 과정중 이벤트 스토밍의 과정을 모방하여 Domain Event, Command, Aggregate 를 도출하여 이를 바탕으로 모델을 구축하여 ERD 설계를 진행하였습니다. 실제 서비스를 만드는 과정에서 다양한 요구사항이 변경되어도 실제 도메인에 대한 요구사항의 수정이 아닌 경우 보다 유연하게 대처하여 빠르게 작업을 하여 예상 기간보다 5일 일찍 작업을 마무리 할 수 있었습니다.

[ nginx 무중단 배포 학습 및 적용 ] 적용 전 배포된 서비스를 업데이트 하기 위해 실제로 서비스를 정지하고 배포하며 실제 업데이트가 적용 되는 경우 클라이언트에서 API Call 작업이 불가능한 상황이 있었습니다. 이를 해결하기 위해 무중단 배포를 위한 자료를 정리하였습니다. 그 과정에서 nginx 를 사용하여 스프링 부트 jar 을 2개 사용하여 포트를 변경하는 방식으로 무중단 배포를 구현하였습니다. 무중단 배포를 통해 실제 서비스가 업데이트 되더라도 클라이언트에서는 언제나 원하는 시점에 API를 호출할 수 있고 보다 빠르게 제공하는 경험을 할 수 있었습니다.

[ github action CI & CD 스크립트 작성 ] 팀에서 따로 build, style check, test 등을 확인하지 않더라도 항상 신뢰 가능하게 코드를 통합할 수 있도록 CI 스크립트를 작성했습니다. 적용 후 실제로 style이 맞지 않는 부분을 자동으로 확인 가능하였고 build 가 불가한 부분을 빠르게 확인하여 팀 내에서 추가로 확인에 필요한 시간을 절약하여 개발에 투자할 수 있었습니다. 또한 AWS S3에 build된 파일을 제공하여 AWS CodeDeploy 를 사용해 항상 신뢰 가능하도록 배포하는 CD 스크립트를 작성했습니다. 실제로 적용전 AWS EC2에 접속하여 수동 배포 과정의 시간을 줄이고 클라이언트에 빠른 속도로 개발 사항을 전달 할 수 있었습니다.

[ CI & CD 세션 발표 진행 ] 행사에 참여하는 다른 모든 팀에 정보를 공유하는 세션 발표자리에서 CI & CD 를 주제로 발표하였습니다.


2022.09 ~ 2023.01

SOPT-Soptamp

SOPT 공식 앱 : 신입 회원들을 위한 길라잡이 Soptamp

역할 : Andorid 개발

→ 전국 대학생 연합 IT 벤처 창업 동아리 SOPT에 참여하는 신입 회원들을 위한 SOPT 활동을 즐기기 위한 미션을 제공하는 공식 앱 기능입니다.

→ 기획 1명, 디자인 2명, AOS 3명, iOS 4명, BE 2명

→ Kotlin, Android, jetpack compose, MVVM, Git, Github


  1. Clean Architecture 를 이용하여 Presentation, Domain, Data, Remote 레이어 분리하였습니다.
  2. 각 레이어에서 OCP를 지키기 위해 각 레이어에서 수정이 있더라도 다른 레이어에 영향이 덜 끼치도록 DIP 를 활용하여 Interface 를 참조하도록 구현했습니다. 3.각 레이어 의존성을 낮추기 위해 각 레이어에 해당하는 DTO 를 작성하고, 그 결과를 전달하는 수단으로 Kotlin Result<T> 객체를 이용하도록 구현하였으며, 추후 모듈이 분리된 환경에서도 테스트가 가능하도록 설계했습니다.
  3. 데이터 조회/작성 의 경우 Coroutine 을 사용하여 처리, 또한 각 Coroutine 이 Lifecycle에 따라 올바르게 할당, 해지 될 수 있도록 viewModel Scope 를 활용하여 기능 구현을 했습니다.
  1. Compose 로 미션 티켓 Custom Shape 구현 및 추후 상/하 패턴이 변경될 경우를 대비하여 패턴 수, 패턴을 입력 받으면 원하는 패턴이 그려질 수 있도록 구현했습니다.
  2. 전체 조회 과정에서 미션 완료 여부를 통해 미완료/완료 미션을 구분 할 수 있는 로직을 Repositroy 패턴을 이용하여 AAC-ViewModel 에서는 전체/미완료/완료 미션을 부르기만 하면 어떤 api 를 사용했는지 상관없이 결과를 받을 수 있도록 구현했습니다.
  1. Repository 패턴을 이용하여 비즈니스 로직을 분리하였습니다.
  2. DataStore 를 이용하여 유저 ID를 조회하여 랭킹 목록에서 자신의 랭킹으로 바로 이동할 수 있는 로직을 작성했습니다.

Untitled

2022.01 ~ 2022.01

https://github.com/Team-Beforeget/Beforeget-Android


🔎 2020~2021