1. 이번 주 항해 취업 리부트코스에서 내가 구현한 기능
- 유저의 기본적인 기능과 관련된 기능을 구현.
- 회원가입 및 로그인 : 소셜 로그인 기반으로 구현. 회원가입의 경우 로그인시 자동적으로 DB에 데이터가 저장된다.
- 로그아웃 : 로그아웃 버튼 클릭 시 저장되어 있던 유저와 관련된 정보를 지운다.
사실 이 프로젝트의 메인 주제는 정산 기능을 구현하는 것인데, 도중에 주제 변경을 하다보니, 아직 비디오를 재생하고, 조회수를 누적하는 기능까지 만들지는 못했다. 하지만 다음 주차가 시작하는 수요일이전까지는 기능을 완료해서 2주차 프로젝트 진행에 차질이 없도록 노력해야겠다.
2. 해당 기능을 구현하기 위해 거친 기술적 의사결정
고민한 기술의 종류
MySQL vs MariaDB
각각의 장단점
둘 모두 지금까지 보편적으로 가장 많이 사용하고 있는 오픈 DB이며 제작자 또한 같은 것으로 알고 있다. 장점과 단점을 나열해보면 다음과 같다.
MySQL | MariaDB | |
장점 | 오랜 기간 사랑받아온 DB로서 단순한 쿼리처리 능력이 우수함. | 오픈 소스 기반의 MySQL 보다 뛰어난 성능을 보여줌. |
다중 스레드를 지원하고 있어 다양한 환경에 적응 가능. | 다양한 기능, 다양한 스토리지 엔진 등이 있어 더 활용도가 높다. | |
단점 | 상업용 라이센스를 구입해야 함. | 크게 없음. |
사실상 MySQL을 fork한 DB이다보니, MySQL의 장점을 포함하는 상위호환의 DB라고 생각해도 무난한 것은 MariaDB이다. 하지만 MySQL을 고르게 된 것은, 단기간에 프로젝트를 구현해야하다보니 환경설정 시간에 시간을 줄이고 싶었기 때문이다. SQL문을 짜는 방식 같은 경우는 같겠지만, 환경 설정의 시간을 뺏기는 걸 최소화하고 싶었다.
물론 다음에 기회가 된다면 개인 프로젝트는 MariaDB 기반의 환경에서도 경험해볼 수 있다면 좋겠다.
3. 이번 주 겪은 트러블슈팅
문제와 원인
구현했던 코드에서 처음 OAuth2가 인증검사를 실시할 때 처음 보는 유저라면 그 값을 DB에 새롭게 추가해주는 코드가 정상적으로 동작하지 않았다. 처음에는 다른 사람의 코드를 참조하다보니 제대로 구조적으로 이해하지 못해 발생한 문제라고 생각했지만, 확인해보니 다른 문제였다.
문제 해결
엔티티로 작성한 User 엔티티 내부의 컬럼 값과 그 값을 참조하는 테이블 간의 이름이 제대로 매핑되지 않아 값이 제대로 INSERT 되지 못해 발생한 문제였다. 사소한 문제라고 생각이 들겠지만, 오히려 이런 부분에서 문제가 더 많이 발생한다는 것을 이번에 알게 되었다. 기초적인 코드 부분부터 확인하고 다른 코드와의 관계를 생각하며 문제를 해결해나가야겠다.
4. 이번 주 진행된 개인 프로젝트에서 얻은 인사이트
솔직히 끊임없이 하차할까 말까 고민이 됐다. 항해에서 요구하는 기본 성실 수치에 도달할 자신이 없었던 게 스프링과 스프링 부트에 대한 기본 지식이 하나도 없는 상태에서 이렇게 어려운 난이도를 소화할 수 있을까 계속 심적으로 흔들렸고, 난이도가 높다보니 지식에 대한 이해 없이 그냥 시간을 날리는건 아닌가 걱정을 많이 하기도 했었다. 하지만 결국 이 또한 하나의 과정이고, 설사 이 과정이 너무 벅차서 스프링에 대한 지식을 하나도 얻지 못한다고 하더라도, 최소한 스프링 부트 환경에서 API를 작성해보고 했던 경험 만큼은 기억에 남을 것이다. 그래도 조금씩이라도 그렇게 얻어간다면 그런 경험 하나하나가 나에게 도움이 되지 않을까 하는 마음으로 또 버티고 항해가 바라는대로 성장해보려고 노력하자.
항해 개발자 취업 리부트 코스를 수강하고 작성한 콘텐츠 입니다.
'항해99 > 5-8주차' 카테고리의 다른 글
[항해 취업 리부트 코스] 7-8주차 프로젝트 WIL (0) | 2024.05.14 |
---|---|
[항해 취업 리부트 코스] 6주차 프로젝트 WIL (0) | 2024.04.30 |