[인프런 워밍업 클럽 스터디1기] BE 1주차 회고록
강의 수강
1일차 - 서버 개발을 위한 기본 환경 설정 및 네트워크 기초
기본적인 내용을 배우는 시간, HTTP 네트워크 기초에 대해서 배우고 있는 내용이 있어서 기본에 배웠던 내용들을 복습하는 시간이 되었다.
2일차 - 첫 HTTP API 개발
대표적으로 GET과 POST를 나타내며 데이터를 전달하는 방법이 쿼리와 Body(JSON)으로 나뉘며 자세하게 모르고 있었던 JSON을 받는 방법에 대해서 알게 되었다.
예전에 배웠던 부트캠프에서 스프링을 배우다가 dto 개념을 제대로 모르는 상태에서 프로젝트에 투입이 되었는데, request 와 response 을 활용하지 못하여 주어진 소스코드를 이해하지 못해서 구조를 어떻게 활용을 해야하나 고민했었다.
그리고 다양한 파라미터와 JSON을 받아서 어떻게 컨트롤러 단에서 처리를 해야하는지 전혀 감이 잡히지 않았는데 최태현 코치님이 보여주신 구체적인 예를 통해서 막연한 안개가 걷힌 느낌이 들었다.
3일차 - 기본적인 데이터베이스 사용법
MySQL에 대해서 이론적인 부분은 배운 상태이지만 우리가 실무적인 면에서 주로 사용하는 명령어들을 통해서 MySQL을 어떻게 사용해야 할지 감을 잡게 되었다.
JPA를 이론적으로는 알고 있는 상황이지만 실질적인 프로젝트에 적용해본 상태는 아니다.
JPA를 JdbcTemplate대신에 사용한다는 것을 알지만, 어떤 범위에 사용하는지를 몰랐고 그 기본적인
사용법을 알고나서 이후에 있는 JPA를 어떻게 적용할지 조금 두근거리긴한다.
무엇보다 백엔드는 어떤 역할을 하는지(기능, 로직, DB...) 구체적으로 체험 할 수 있게 되었다.
4일차 - 데이터베이스를 만드는 API
구체적으로 jdbcTemplate를 사용하는 구간이 아닌가 싶다. DB를 사용하면서, 데이터 자체가 유효한 값을 가지는지, 정당한 요청이 오지 않아 오류를 던져준다던지(예외 처리) 확인하는 구간이다.
5일차 - 클린코드의 개념과 첫 리팩토링
클린코드에 대해서 많이 들었던 기억이 있다. 이론적으로만 들었기에 어떻게 적용할지 몰랐는데, Controller에 너무 많은 역할이 존재하므로 Controller - HTTP 관련 역할 담당 , Service - 분기처리, 로직 담당, Repository - DB와 접근을 담당으로 나눈 방법을 통해서 클린코드를 구체적인 방법으로 체험하는 시간이었다.
미션
1일차 - 자바 어노테이션
스프링에서 현업에 사용하시는 분들의 필요에 의해서 이미 여러개의 어노테이션이 정립이 되어있는 것으로 기억한다. 하지만 그게 어떤 원리로 작성이 되었는지는 모르고 있다. 특히 원초적인 자바 어노테이션은 더더욱 알일이 없다.
일반적인 어노테이션은 눈에 익을 만큼 자주 보이지만, 일반적인 어노테이션에서 벗어나는 특별한 어노테이션이 필요할 때는 커스텀 어노테이션을 작성한다는 것을 알게 되었다. 특히 커스텀 어노테이션을 만들어 반복작업을 줄이는 노력을 할 수 있다는 것이다.
다양한 답변들을 알아보기 위해서 네이버, 구글, ChatGPT를 사용하여 여러 방면으로 데이터를 얻고자 했고, 이론적인 부분만 존재하는 것보다는 최대한 개발자에게 있어 최고의 문서인 코드를 통해서 나타내는 예시들을 골라서 정리했다.
2일차 - 추가적인 API 개발
쿼리 파라미터를 받아서 JSON으로 반환하는 방법을 배우고,
LocalDate를 이용하여 날짜를 받아서 getDayOfWeek()을 이용하여 날짜를 나타내는 방법을 배웠다.
마지막으로는 쿼리 파라미터가 아니라 JSON 바디로 받으면서 또 List를 가지고 있는 JSON을 이용하여 API를 만드는 방법에 대해서도 배우게 되었다. 힌트로 알려 주신게 컸지만 DTO에서 List를 받아 iter로 반복하여 API가 기능하게끔 반환 할 수 있다.
POST MAN의 API 테스트 툴이 정말 절실하다는 것을 느끼게 되었다.
3일차 - 익명 클래스와 람다식
람다식은 함수형 프로그래밍 개념을 자바에 도입하기 위해서, 코드를 더 간결하고, 읽게 쉽게 만들고, 성능이 중요시 되는 최근 병렬 처리와 이벤트 기반 프로그래밍으로 효율적으로 대응 할 수 있다.
람다식과 익명 클래스의 관계는
람다식은 익명 함수를 간결하게 표기, 익명 클래스는 이름이 없는 클래스 = 주로 인터페이스 구현체 생성에 사용한다.
그러므로 람다식은 익명 클래스를 대체, 코드가 더 간결해지고 가독성이 향상 된다.
함수형 프로그래밍, 익명클래스, 람다식, 함수형 인터페이스, 스트림 API, 메소드 레퍼런스등 저 2개의 질문에 대해서 많은 양의 검색과 정리를 통해서 답을 도출해낼 수 있었다.
도입배경과 적용 방법 등이 있지만 무엇보다 많은 숙련도를 요구하는 방법이다보니 쉽게 접근하지 못하지만 분명 열심히 단련하면 좋은 접근 방식인 것 같다.
4일차 - 추가적인 API 개발
기존 API 개발에서 발전하여 JdbcTemplate를 적용하여 API를 작성하는 과제였다.
다만 단순하게 API를 작성한다면 각각의 요구에 맞게 작성을 해나가면 되겠지만, 이번 과제는 모든 요구사항을 확인하여 테이블을 작성하고나서 문제를 해결해나가는 것이 도움이 되었던 것 같다.
마치 Q&A에서 기획 -> 논의 -> 개발 단계처럼 먼저 기획을 통해서 기능을 적고, 이후 API 명세서를 만들고 DB 스키마를 만들고나서, 개발 단계로 들어가 직접 코드를 타이핑 하는 과정 처럼 말이다.
5일차 - 클린 코드
과제로 주어진 코드를 코딩테스트를 준비하던 과정에서 겪었던 것 처럼, 입력을 받고 기본적인 설정을 하는 구간 / 주사위를 굴리고 카운트 하는 클래스 / 주사위가 나온 횟수를 출력하는 클래스 등으로 나눠서 명확하게 나누어 읽기 쉬운 코드를 만드는게 클린 코드를 만드는 방법일 것 같다.
사실 이런 과정이 어렵지는 않았는데 코딩테스트 스터디를 준비하면서 여러 언어가 모이게 되고
소통의 어려움이 있었다. 좀 더 구성을 깔끔하게 나누어 클래스로 구성하고 주석을 통해서
어떤 기능을 하는지 알려주어 소통의 어려움을 해결 했던 경험이 한 몫을 했던 것 같다.
댓글을 작성해보세요.