블로그
전체 52024. 11. 05.
0
[인프런 워밍업 스터디 클럽 2기 백엔드(클린코드, 테스트코드)] 후기
왜 참여했는가?스프링과 JPA 공부를 한 뒤, 간단한 웹 애플리케이션을 만들어보는 프로젝트를 진행해보았다. 프로젝트에 테스트 코드를 작성하는데, 막상 어떻게 작성해야 할지는 알 수 없었다. 관련 자료를 찾아보아도 TDD나 유닛 테스트, JUnit에 관한 내용은 잔뜩 있었지만 '그래서 실제로 테스트를 어떻게 작성해야 하는지'를 알려주는 자료는 많지 않았다. 결국 우격다짐으로 테스트 코드를 작성하긴 했지만, 결과물은 만족스럽지 않았다. 프로젝트를 끝낸 후 인프런에 테스트 관련 강의를 찾아보던 중, 마침 워밍업 스터디 클럽을 진행하고 있어서 참여하게 되었다. 강의 내용은 어떠했는가?테스트 관련 내용이 궁금해서 들었지만, 클린코드 관련 내용도 아주 좋았다. '클린 코드'나 '오브젝트'같은 책들에서 얻을 수 있는 지식을 벗어나는 얘기는 없었지만, 파편화되어 있던 지식들을 조각 모음하는 것 같은 기분이 들었다. 그 과정에서 들어보긴 했지만 정확히 알고 적용하지 못하고 있던 내용들을 많이 발견할 수 있었다. '추상화 계층'같은 개념이 그랬다. 독창적인 설명 방식이나 현직자의 관점을 엿볼 수 있는 점이 가장 큰 장점이다. '추상'에 관한 설명은 정말 인상적이었다.테스트코드 강의는 정말 좋았다. 각 레이어별로 어떻게 테스트를 작성해야 하는지 구체적으로 알려주는데, 이게 정말 내가 원하던 것이었다. 정말 속이 시원할 정도였다. 또 Spring Rest Docs처럼 궁금하긴 했지만 우선순위로 두지 않았던 것을 이번 기회에 배울 수 있어서 좋았다. 워밍업 클럽 경험은 어땠는가?미션을 해결하고 온라인 라이브를 통해 피드백을 받으면서 부족한 점을 발견할 수 있었다. '안다고 생각했지만 사실은 모르고 있던' 지점들을 발견해서 공부하고 발전할 수 있었다.온라인 라이브에서는 Q&A도 진행하였는데, 궁금하던 점들을 정말 시원하게 모두 해소할 수 있었고, 또 다른 사람들의 질문을 보면서도 많이 배웠다.매주 회고를 적어야 했는데, 이 회고는 좀 더 자세하게 적을걸 그랬나 하는 아쉬움이 살짝 들긴 한다. 마무리하며나에게 워밍업 클럽의 가장 큰 장점은 '몰입'이었다. 하루마다 정해진 분량이 있어서 강의를 몰입해서 들을 수 밖에 없었다.전반적으로 워밍업 클럽은 이후에 다른 주제로 또 참여하고 싶을 정도로 좋았다.강의를 들으면서, 글의 마무리로써는 조금 엉뚱할 수 있지만 코틀린을 공부해야겠다는 생각이 확고하게 되었다. 지금은 코틀린으로 아주 간단한 애플리케이션을 만들고 있고, 스프링과 코틀린을 함께 써 볼 예정이다.
2024. 10. 25.
0
[인프런 워밍업 스터디 클럽 2기 백엔드(클린코드, 테스트코드)] 4주차 발자국
강의 수강 학습 내용 요약test double, 테스트 간 독립성, Test Fixture, Mockito, Spring REST Docs 학습 내용 회고테스트 환경의 독립성을 보장하자.테스트 간 독립성을 보장하자.테스트 클렌징할 때 중간 테이블도 같이 지워줘야 한다.추상 클래스로 테스트 환경을 통합할 수 있다. 미션Mockito와 관련된 애노테이션들을 비교해보고 정리하는 미션이었다.그리고 @BeforeEach와 관련된 슈도코드 작성 미션이 있었는데, 출제 의도대로 잘 작성한 것 같다. 마무리하며궁금증을 정말 많이 해소할 수 있었고, 미처 알지 못한 부분도 여럿 알게 되었다.강의에서 가장 기억에 남는 것은 도메인이 가장 중요하다는 것이다.도메인의 성격에 맞는 코드를 작성하는 것이 중요하다.클린 코드와 테스트 코드의 개념에 대해 알게 되었다. 앞으로 테스트를 많이 작성해보면서 적용해보도록 해야겠다.
2024. 10. 20.
0
[인프런 워밍업 스터디 클럽 2기 백엔드(클린코드, 테스트코드)] 3주차 발자국
강의 수강 학습 내용 요약테스트의 중요성, 단위 테스트, TDD, JUnit, JPA 기반 테스트 학습 내용 회고테스트는 변화하는 소프트웨어의 안정성을 보장한다.테스트는 [문서]다.테스트는 잘못 작성하면 오히려 유지보수 비용만 늘어난다.TDD를 적용하면 테스트하기 쉬운 구조로 프로그램을 만들게 되며, 좋은 설계로 이어진다.TDD는 상황에 따라 적용해야 한다.해피케이스에만 집중하지 말고 예외 케이스에도 집중해야 한다.레이어 별로 알맞은 유닛 테스트/통합 테스트 방법을 적용해야 한다. 미션readable-test 강의해서 작성했던 코드에 테스트 코드를 작성하는 미션이었다.미션을 진행할 때는 I/O 테스트는 하지 않아도 된다고 생각했는데, 강의를 듣다보니까 Repository의 동작을 보장하기 위해 테스트를 작성하는 것이 맞는 것 같다.간단한 예제다보니 콘솔 입/출력을 받는데, 이 부분의 테스트는 백엔드에서 고민할 영역이 아니라는 된다는 생각은 변함 없다. 마무리하며Spring & JPA 기반 테스트에 관해 구체적으로 알 수 있어서 좋았다. 내가 정말 원하는 내용이었다.최근에 코틀린 공부를 시작했는데, Kotest + mockk를 가장 많이 사용하는 것 같아서 이것들도 궁금해졌다.
2024. 10. 12.
0
[인프런 워밍업 스터디 클럽 2기 백엔드(클린코드, 테스트코드)] 2주차 발자국
강의 수강 학습 내용 요약리팩토링 기법, 리팩토링 시 지켜야할 객체지향 원칙, 추상과 구체의 트레이드 오프 학습 내용 회고추상이란 사물이나 표상의 성질을 추출하는 것이고, 그것은 필요없는 것을 '버리는 것'이다.과도한 추상은 오히려 복잡도만 증가시킬 수 있다. 현 단계에서 필요한 정도의 추상을 해야 한다.개발을 진행하면서 우리는 도메인 지식을 획득하게 된다. 도메인 지식을 획득하면 그때 좋은 구조로 변경할 수 있다.추상과 구체를 넘나들면서 더 잘 이해할 수 있게 된다. 미션코드를 리팩토링하는 미션이었다.리팩토링 후에 강의를 들으면서 나의 코드와 비교해보았다.그리고 중간점검 라이브에서 피드백도 받았다.if 문 분기에서 분기에 들어가기 전에 처리할 수 있는 코드를 놓치면서, switch case 문으로 과도하게 리팩토링하게 된 것 같다. 메소드를 추출하기 전에 if 문 로직을 잘 살펴보아야 좋은 리팩토링을 할 수 있음을 명심하자.일급 컬렉션의 개념은 알고 있었는데, 적용하지 못했다. 앞으로는 더 신경 써서 적용하려고 노력해야겠다.추상화 레벨에 관해서는 단순히 메소드를 추출하는 것이 중요한 것이 아니라, 적절한 이름을 붙이면서 높은 추상화 레벨을 획득할 수 있음이 중요한 것이다.읽는 사람이 직관적으로 해석할 수 있을 정도로 코드의 의도를 분명하게 드러내야 한다.상태를 가지지 않고, 앞으로도 가지지 않을 확률이 높다면 VO로 만드는 것이 좋다. 마무리하며어떠한 지식을 한 번 들어본 것과 실제로 적용할 수 있음이 다르다는 것을 새삼 느꼈다. 반복 숙달, 의식적인 노력을 통해 머리로만 알고 있는 것을 체화해야겠다.2개의 강의 중 한 개를 완료했다. 내가 생각했던 것보다 더 많은 것을 얻을 수 있었다. 다음 강의가 더 기대된다.
2024. 10. 05.
0
[인프런 워밍업 스터디 클럽 2기 백엔드(클린코드, 테스트코드)] 1주차 발자국
강의 수강 학습 내용 요약클린 코드의 중요성과 객체 지향 원칙에 대해 배우고 적용해보았다. 학습 내용 회고이미 다른 매체를 통해 알고 있는 내용이 많았다. 그렇지만 새로웠다. 머리 속에서 파편화되어있던 정보들을 조각 모음한 것 같다.함수 내에서 추상화 레벨을 맞춰야 한다는 것은 최근 읽었던 '쏙쏙 들어오는 함수형 코딩'에서 다이어그램으로 본 것 같은데, '추상화 레벨'이라는 용어가 아니라 '계층'이라는 단어로 사용되어 있었다. 용어를 어떻게 사용하는지에 따라 내가 인지하고 받아들일 수 있는 정도가 달라지는 것 같아 신기했다. 강사님도 자신만의 언어로 말할 수 있어야 한다는 것을 강조한 적 있다. 배운 내용을 그대로 받아들이기 보다는 내가 받아들이기 쉬운 형태로 한 번 변형해서 받아들이도록 노력해봐야겠다. 미션두 개 모두 간단한 미션이어서 미션을 해결하는 것보다는 왜 이런 미션을 냈는지를 고민하는 것에 집중했다. 첫번째 미션은 위 내용과 비슷하다. 나만의 언어로 학습하는 메타인지적 측면을 강조한 것 같았다. 두번째 미션은 리팩토링 미션이었고, 지금까지 배운 내용을 돌아보라는 의미인 것 같았다. 강의에서 배운 리팩토링 기법과 객체지향 원칙을 적용해서 해결해보았다. 마무리하며이번에 깨달은 것은, 나의 지식이 모자르지는 않다는 것이다. 이미 알고 있거나, 들어본 적 있던 내용들이 꽤 많았다. 이것은 장점이지만 또 단점이기도 하다. 내가 이미 알고 있지만 적용하지 못하고 있던 점들이 꽤 많았다는 뜻이다. 내가 제대로 받아들이지 못한 점들을 찾아내서 하나씩 제대로 적용해보면 크게 성장할 수 있을 것 같다. 그리고 이 강의가 그것에 도움을 많이 줄 것 같다.