우테코 5기

우테코 5기

우아한테크코스 5기 회고

우아한테크코스 과정이 종료되었다! 벌써 시간이 이렇게 빠르게 흐르다니..🥲 약 10개월간의 여정이 처음에는 길게 느껴졌었는데, 지금 와서 돌이켜보니 그렇게 길지만은 않았던 것 같기도 하다. 이 과정에서 많은 것들을 느꼈고, 배웠고, 성장했다. 단순히 기술적인 성장을 넘어서서 인격적인 성장, 그리고 내 삶에 대해 고민을 많이 했던 계기였다. 그리고 부족했던 점들에 대해서도 느끼는 순간이 많았다. 우아한테크코스의 마지막 회고라는 사실이 아쉽기는 하지만, 담백하게 지난 1년을 되돌아보려고 한다! ㅎㅎ기술적 성장우테코에 합류하기 전까지는 백엔드 개발자의 'ㅂ'자도 몰랐다. 정확히 어떤 업무를 담당하는 건지도 잘 몰랐다. 프리코스를 시작할 때에는 자바조차도 알지 못해서 고생했던 기억이 난다. 지금 되돌아보면 어느..

우테코 5기

[레벨 4 회고] 레벨 4 레거시 코드 리팩토링 미션 회고

레벨 4는 프로젝트로 바빠 미션에 대한 회고는 여태 작성하지 못했었는데, 마지막 미션에서는 얻은게 상당한 것 같아 회고를 작성하게 되었습니다. 레거시 코드 리팩토링 미션은 기존의 절차지향적으로 작성된 코드를 단계적으로 리팩토링 및 보완하는 미션입니다. 비즈니스 요구사항 분석하기 step1 의 요구사항은 비즈니스 요구사항을 분석하고 테스트 코드를 작성하는 것이었습니다. 처음 주어진 코드는 빈약한 도메인 모델을 사용하고 있었을 뿐만 아니라 서비스에 모든 로직이 쏠려 있는 트랜잭션 스크립트 패턴으로 구성되어 있었습니다. 또한 문서라고 할만한 게 전혀 없었기 때문에 오로지 코드로부터 요구사항을 분석해야 했습니다. 얼추 기능목록은 뽑아내긴 했으나 코드만으로 비즈니스를 유추하기에는 모호한 부분도 존재했습니다. 도메..

우테코 5기

데이터베이스 호환성을 고려한 무중단 배포 진행하기

배경현재 하루스터디라는 서비스를 개발하고 있습니다. 하루스터디는 효율적인 학습 사이클을 제공하는 서비스로, 학습 전 후로 계획 및 회고 작성을 권장함으로써 학습 방법에 대한 빠른 피드백을 가능하게 해 줍니다. 이런 학습 사이클은 여럿이서도 진행할 수도 있고, 혼자서도 진행할 수 있습니다. 그런데 사실 이전까지는 여럿이서 하루스터디를 사용하더라도 진행상황이 동기화되지 않았습니다. 누구는 계획 단계, 누구는 회고 단계일 수 있다는 이야기입니다. 그리고 진행상황을 동기화해 달라는 사용자 피드백에 따라 새로운 버전에서는 동기화된 버전을 제공할 예정이었습니다. 하지만 문제가 여럿 발생했습니다. 스터디 중간에 버전이 바뀐다면?우선 이전 버전에서는 '진행도'라는 개념이 사용자마다 존재했습니다. 따라서 누구는 계획을 ..

우테코 5기

[레벨 4 회고] 하루스터디 사용자 유치 - 2

사용자 유치를 시작한 지 이제 2주 정도 지난 것 같습니다. 마찬가지로 사용자 유치 과정에서 어떤 시도를 했고 어떤 결과를 얻었는지를 기록하고자 합니다! 하루스터디, 제휴 맺다! 저번 회고에서도 언급했다시피 하루스터디를 교육 프로그램에서 사용하고 싶다는 제안을 주신 분이 계셨는데요, 외부 서비스와의 연동은 나름 민감한 사항이라고 여겨질 수 있었기에 코치님들께 문의를 드렸었습니다. 그리고 얼마 전에 코치님께서 '하루스터디 팀이 원한다면 사용을 허가해도 된다'라고 말씀해 주셨습니다 👏 따라서 제안을 주신 분과 함께 게더에서 미팅을 진행했는데요, 하루스터디의 백그라운드를 소개하고 간단한 질의응답 시간을 가졌습니다. 마코가 대표로 발언을 하고 나머지 팀원들은 경청을 하는 자리였는데 좋은 분위기로 미팅이 잘 진행..

우테코 5기

[하루스터디] 어드민 페이지 개발하기 - 기본적인 통계 기능 구현

현재는 데이터 조회를 위해 매번 데이터베이스에 접근해야 하는 구조입니다. 또한 데이터베이스는 인바운드 네트워크 설정으로 인해서 우테코 캠퍼스에서만 접근이 가능한 상태입니다. 따라서 어드민 페이지에서 데이터 조회를 지원한다면 어디에서든지 쉽게 데이터를 확인할 수 있을 것입니다. Spring Data의 Pageable 사용하기 Spring Data의 Pageable을 활용하면 페이징 기반의 조회를 손쉽게 구성할 수 있습니다. @GetMapping("/members") public ResponseEntity findMembers(Pageable pageable) { List members = adminService.findMembers(pageable); return ResponseEntity.ok(membe..

우테코 5기

[하루스터디] 어드민 페이지 개발하기 - 로그인 구현

메인 어드민 기능을 개발하기에 앞서 로그인을 구현해보고자 합니다. 어드민 페이지에 접근할 수 있는 사용자는 하루스터디 개발자들로 제한되어야 하기 때문에 로그인 기능은 필수적이라 할 수 있겠습니다. 기존 인증 시스템 재사용하기? 하루스터디는 Oauth2 기반의 인증 시스템을 사용합니다. 사용자가 소셜 로그인을 진행하면 해당 정보를 기반으로 인가용 access token을 발급하는 구조입니다. 이런 기존 인증 시스템을 사용할 순 없을지 고민이 되었습니다. 투자하는 리소스를 최소화 시킬 수 있으면서 구현 방식또한 간단하리라 예측했기 때문입니다. 하루스터디 서비스에 소셜 로그인을 하게 되면 사용자는 ID를 갖게 됩니다. 그리고 이는 Member 테이블의 Primay Key입니다. 예를 들어 구글 로그인을 진행하..

우테코 5기

[하루스터디]어드민 페이지 개발하기 - 요구사항 분석

본격적인 사용자 유치에 들어서면서 모니터링 및 분석 도구의 필요성이 대두되었고 어드민 페이지를 개발하게 되었습니다. 실제 개발에 들어가기 앞서, 어떤 기능이 필요할지 대략적으로 분석하고자 합니다. 브레인스토밍 브레인스토밍을 할 때 주의 깊게 생각한 부분은 다음과 같습니다. 어드민 기능을 사용하는 고객은 사용자들이 아닌 하루스터디 개발자들이다. 어드민에서 제공하는 통계 정보는 유의미한 분석 결과를 만들어내는데 도움이 될 수 있어야 한다. 최근 하루스터디는 사용자 통계 정보를 기반으로 기능을 개선하고 있기에 어드민에서 중점적으로 다뤄야 할 내용도 일단은 통계 정보라고 생각했습니다. 따라서 브레인스토밍 내용은 '어떤 통계 자료를 뽑을 것인지'가 주가 되었습니다. 외부로 드러나는 정보, 예를 들어 어떤 페이지에..

우테코 5기

[레벨 4 회고] 하루스터디 사용자 유치 기록 - 1

5차 데모데이를 마친 직후부터 하루스터디는 사용자 유치에 많이 집중하게 되었는데요, 이 과정을 기록하고 싶어 앞으로는 매주 사용자 유치에 과정과 결과를 회고 형식으로 작성할 예정입니다 😌 공식 오픈카톡방 운영하기 첫번째로 했던 사용자 유치 방법은 오픈카톡방을 운영하는 것이었습니다. 하루스터디는 혼자서도 진행할 수 있지만 기본적으로 여러 명이 진행하는 것을 전제로 만든 서비스이기 때문에 사용자 풀을 유지시킬 수 있는 수단이 필요하다고 생각했습니다. 그래서 공식 오픈카톡방을 개설하고, 하루스터디 사이트에서 쉽게 접근이 가능하도록 구성했습니다. 하루스터디 사이트에 들어가게 되면 우측 하단의 카카오톡 버튼을 통해 쉽게 오픈카톡방으로 이동할 수 있습니다. 오픈카톡방에서는 각자 자유롭게 스터디 참여코드를 올리고, ..

우테코 5기

우아한테크코스 레벨 3 회고

조금은 늦게 작성하게 된 레벨 3 회고입니다.. 🥲 레벨 4에 들어서면서 이것저것 학습하게 되니 회고를 자꾸만 미루게 되는 것 같습니다. 아무튼 레벨 3에서는 무엇을 느꼈고, 무엇을 경험했는지 작성해보고자 합니다! 협업 프로젝트 시작 레벨 3에 들어서면서 협업 프로젝트를 시작하게 되었습니다. 저번 회고에서도 언급하긴 했지만 어쩌다 보니 제가 낸 기획이 뽑히게 되어서 '짧은 주제의 스터디를 쉽고 빠르게'라는 주제로 협업을 진행하게 되었습니다. 사실 협업 경험이 없는 건 아니지만 모두 학교 수업 시간에 진행되었던 협업이고 학점을 위한 팀플이었기 때문에 제대로 된 협업은 아니었던 것 같습니다. 그래서인지 우테코에서 진행하는 협업이 처음에는 굉장히 낯설게 느껴졌었습니다. 기획 단계에서부터 모르는 키워드가 쏟아져..

우테코 5기

에러코드, 상태코드, 예외 메세지를 쉽게 관리해보자!(+ 에러코드 문서화)

들어가면서 웹 어플리케이션을 개발하다 보면 수많은 예외 상황에 마주하게 됩니다. 그리고 좋은 어플리케이션을 구축하기 위해서는 이런 예외 상황들에 대해 적절한 응답을 내려주어야만 합니다. 일반적으로 예외 핸들링을 위해 관리해야 하는 정보는 다음과 같습니다: 상태코드 에러코드 예외 메세지 에러 코드의 경우에는 서비스마다 관리 여부가 다를 수 있겠으나, 제가 현재 개발하고 있는 '하루스터디' 서비스에서는 위 세 가지 요소를 전부 다 관리하고 있습니다. 그렇다면 위 요소들은 어떻게 관리가 되어야 할까요? 가장 먼저 떠올릴 수 있는 방안은 '예외 객체 자체에서 관리하는 것' 입니다. public class StudyNotFoundException extends RuntimeException { private st..

teo_99
'우테코 5기' 카테고리의 글 목록