전체 글21 0에서 1로 가기 위한 테스트 환경 구축 보호되어 있는 글 입니다. 2024. 8. 18. 시간 도둑 테스트 코드, 효율화를 위한 발버둥 시작하기 앞서..현재 저희 팀이 관리하고 있는 백엔드 프로젝트에서는 아쉽게도 테스트 코드가 작성되어 있는 것이 없습니다.하지만 저희 회사 개발 조직에서 권고하고 있는 최소 테스트 커버리지는 50% 이상인데요.그에 맞게 저희 팀도 테스트 코드에 대한 필요성을 느꼈습니다.따라서 저는 팀 내 주요 프로젝트에 테스트 코드를 효율적으로 관리하기 위한 전략을 세우고, 예시 코드를 통한 가이드를 작성하고, 테스트 환경을 구축해 나갔습니다.이 글에서는 테스트 코드 전략과 간단한 예시 코드를 소개해보면서 관련 지식들을 정리해보려고 합니다. 3가지 테스트 코드 전략백엔드 API에서 많이 사용되는 아키텍처 중 하나는 레이어드 아키텍처입니다.저희 프로젝트들도 기본적으로 레이어드 기반의 4개의 계층(4-tier Archite.. 2024. 7. 26. 주니어 개발자의 우당탕탕 입사기 이 글은 필자가 작성한 사내 테크 블로그 내용을 그대로 이관해 온 글입니다.https://oliveyoung.tech/blog/2023-11-30/journey-to-joining-oliveyoung/ 주니어 개발자의 우당탕탕 입사기안녕하세요! 23년 7월에 CJ올리브영 리테일플랫폼개발팀 백엔드 개발자로 합류한 알렉스입니다 :)올리브영에 입사한 지 벌써 5개월이라는 시간이 흘렀는데요. 🐥🐥 지금에서야 비로소 올리브영에 합류하기까지의 여정을 소개해 보려고 합니다.사실, 올리브영에 합류하고 한 달이 지난 시점에 유스콘 23이라는 컨퍼런스에서 이직기에 대한 내용으로 약 100여 명 앞에서 발표한 적이 있었습니다. 오늘은 그 발표 내용과 더불어 시간이 부족해서 말하지 못했던 내용들을 추가로 말해보려고 합니다.. 2024. 7. 25. 깊이 있는 6주간의 기록 대방출 이 글은 필자의 이전 블로그인 https://velog.io/@beomdrive/NEXTSTEP-ATDD-Final에서 핵심 내용을 중심으로 요약한 후에, 내용을 추가 보완하였습니다.※ ATDD 모든 과정이 정리되어 있는 Github 주소: https://github.com/giibeom/nextstep-atdd-final-summary 더욱 개운하고 뿌듯했던 6주간의 여정2023년도 새로운 해를 맞이하고 1월부터 시작된 NEXTSTEP ATDD 과정이 3월 말이 돼서야 완주했다.코드숨 과정을 듣고 NEXTSTEP 과정을 바로 듣게 된 계기는 이동욱(향로) 멘토님의 추천이었지만, 개인적으로도 필요하다고 느꼈던 수강 목적은 다음과 같다.복잡한 비즈니스 로직에서도 코드를 깔끔하게 유지하는 역량을 키우고 싶.. 2024. 7. 22. 테스트 방탄복을 입고, 리팩터링 전쟁으로 이 글은 필자의 이전 블로그인 https://velog.io/@beomdrive/NEXTSTEP-ATDD-4에서 핵심 내용을 중심으로 요약한 후에, 내용을 추가 보완하였습니다. 멀고 험난한 리팩터링, 안전하게라도 하자리팩터링에 대한 개인적인 고찰을 주저리주저리 작성하기 전에, 요약본을 먼저 작성해보려고 한다.아래에 대한 긴 장문의 이야기는 해당 내용들이다.외부 보호 장벽 역할의 테스트를 둘러쌓아 놓자외부 보호막을 기반으로 점진적이고 안전하게 리팩터링 해나가자외부 보호막만으로는 부족하므로, 각각의 통합/단위 테스트도 보강해 나가자실무에서는 시간/리소스의 싸움일 테니, 주요 비즈니스 로직만이라도 우선적으로 작성해 나가자나머지 테스트들은 버그가 발생했을 때 재발 방지 테스트를 하나씩 쌓아나가면서 테스트 코드를.. 2024. 7. 22. 테스트와 인증(Auth)의 만남 이 글은 필자의 이전 블로그인 https://velog.io/@beomdrive/NEXTSTEP-ATDD-3에서 핵심 내용을 중심으로 요약한 후에, 내용을 추가 보완하였습니다. 겉핥기로만 알고 있던 "인증", 제대로 알아보다이전 솔루션 회사에서는 별도의 Auth(인증) 서버가 존재하는 형태로 아키텍처가 구성되어 있었다.3개의 애플리케이션 모듈이 각각 repository 단위로 분리되어 있는 Multi-Repo로 구성되어 있고, 모바일 애플리케이션도 존재했기 때문에 공통으로 관리하기 위함이었다. 이때 토큰 방식으로 인증이 이루어졌는데, 기존 세션 방식을 토큰 방식으로 전환된 이유는 아래와 같았다.세션 방식으로 진행할 때는 각 서버 간의 세션 정합성을 맞춰줘야 한다.이미 구축되어 있는 Redis를 통해 세.. 2024. 7. 22. 테스트에 대한 고민 종결 이 글은 필자의 이전 블로그인 https://velog.io/@beomdrive/NEXTSTEP-ATDD-2에서 핵심 내용을 중심으로 요약한 후에, 내용을 추가 보완하였습니다. TEST, 고민의 막을 내리다그토록 학습하고 싶었던 Test Code를 코드숨에서 처음 배우고, 정말 이런 저런 생각과 고찰을 많이 했었다.테스트 방식에 대한 고찰물론 Mocking을 통해 슬라이스를 해야하는 상황도 분명 있지만, Mock 객체를 통한 테스트는 한창 코드숨을 진행하고 있을 때부터 영 신뢰가 안갔던 것 같다. 지금도 테스트에 대해 완전히 마스터한 것은 아니지만 NEXTSTEP ATDD 과정을 통해 복잡했던 머릿속이 대부분 정리되면서 한결 편해졌다. 사실 내가 생각하고 기대했던 테스트 코드라는 역할(?)은 Mock 객.. 2024. 7. 21. 객체지향으로 생활체조를? 이 글은 필자의 이전 블로그인 https://velog.io/@beomdrive/NEXTSTEP-ATDD-1에서 객체지향 생활 체조 내용을 따로 분리한 후, 요약 및 추가 보완하였습니다. 객체지향 생활체조NEXTSTEP ATDD에서는 과정을 시작하기 전, 객체지향 생활 체조 원칙이라는 개념과 함께 9가지의 원칙을 소개해준다.강의에서는 따로 말해주지는 않지만 강의 자료에 아래와 같이 간략하게만 적혀있다.규칙 1: 한 메서드에 오직 한 단계의 들여쓰기(indent)만 한다.규칙 2: else 예약어를 쓰지 않는다.규칙 3: 모든 원시값과 문자열을 포장한다.규칙 4: 한 줄에 점을 하나만 찍는다.규칙 5: 줄여쓰지 않는다(축약 금지).규칙 6: 모든 엔티티를 작게 유지한다.규칙 7: 3개 이상의 인스턴스 변수.. 2024. 7. 21. 인수 테스트 핥아보기 이 글은 필자의 이전 블로그인 https://velog.io/@beomdrive/NEXTSTEP-ATDD-1에서 핵심 내용을 중심으로 요약한 후에, 내용을 추가 보완하였습니다. 또 한번의 시작퇴사 직후 바로 시작했던 Codesoom 멘토링 과정을 마무리하고 매우 고민이 됐었다.코드숨 총 정리 - 8주간의 기록더 채워가야 할 부족한 점이 뭘까? 물론 공부를 하면 할 수록 부족한 점이 계속 보이긴 했지만, 당장 급한 것이 뭘까 싶었다.퇴사 후 지금까지 했던 공부들을 되돌아보면서 문득 생각이 들었다."내가 진짜 테스트 코드를 효율적으로 짜는 역량이 생긴건가?""내가 복잡한 비즈니스 로직에서도 코드를 클린하게 유지할 수 있을까?" 한동안 계속 고민을 하다가 멘토님이신 이동욱(향로)님께도 고민을 털어놓았더니 아래.. 2024. 7. 21. 밀도 높은 8주간의 기록 대방출 이 글은 필자의 이전 블로그인 https://velog.io/@beomdrive/CodeSoom-Final에서 핵심 내용을 중심으로 요약한 후에, 내용을 추가 보완하였습니다. 8주간의 여정 10월부터 시작한 코드숨 스프링 과정이 연말이 오기 직전에 막을 내렸다. 마지막 날 마지막 PR을 날리고, 퇴사 후 9월부터 쭉 공유 오피스에서 함께 공부하고 있는 스터디 멤버들과 맥주 한잔을 기울였다. 8주 동안 단 하루도 쉬지 않고 미션 과제를 수행하며, 매일 저녁 9시마다 늦지 않게 PR을 날리려고 고군분투했었던 기억이 생생히 났다. 공유오피스 멤버 중 코드숨을 수료했던, 나한테 코드숨을 추천해 주었던 분이 “코드숨 모든 수료생 중에서 제일 열심히 하셨을 것 같다”라는 말에 바로 맥주 한캔을 원샷했다. 되돌아보면.. 2024. 3. 10. 테스트 방식에 대한 고찰 이 글은 필자의 이전 블로그인 https://velog.io/@beomdrive/CodeSoom-6에서 핵심 내용을 중심으로 요약한 후에, 내용을 추가 보완하였습니다. 이번 주에는 지금까지 우당탕탕 학습하고 개발했던 부분들이 머릿속에 뒤죽박죽 섞인 한 주였다. 나는 머릿속에 정리하면서 체득하는 시간이 조금 걸리는 편인데, 그 시간을 충분히 할애하지 못한 것 같다. 아마 멘토님들이 감사하게도 아주 많은 것들을 쏟아내주셔서 더욱 정리할 시간이 필요했다. 코드숨 과정이 끝나면 한번에 정리하려고 했지만, 계속 무의식적으로 이해가 안되는 부분이 신경이 쓰였고 자연스럽게 고민으로 이어졌다. 따라서 이번 주는 복잡한 생각 탓에 개발을 그렇게까지 많이 하지는 못한 것 같다. 하지만 일단 지금까지의 정보들을 내 것으로 .. 2024. 3. 10. 가장 많은 것을 배운 주차 이 글은 필자의 이전 블로그인 https://velog.io/@beomdrive/CodeSoom-5에서 핵심 내용을 중심으로 요약한 후에, 내용을 추가 보완하였습니다. 이번 주에는 지난주에 개발했던 장난감(Product) API에 요청 값 검증(validation) 기능과 회원 생성, 수정, 삭제 API를 TDD로 구현하는 미션이었다. 이제 코드숨의 절반이 지나는 5주차로 막 절반이 지나고 있는 현시점에도 종립 멘토님과 영환 멘토님 덕분에 많은 것을 배우고 있다는 것을 느끼면서, 코드숨 시작 전의 내 모습과 지금의 내 모습을 볼 때 꽤 성장한 것 같아 보여 뿌듯함을 느꼈다. 이번 주에는 지금까지의 과정 중에 가장 많은 것을 깨달았던 주차이기도 하다. 그중에서 이번 글에는 객체 지향과 DTO Entity의.. 2024. 3. 9. TDD의 세계/헥사고날이 뭐예요? 이 글은 필자의 이전 블로그인 https://velog.io/@beomdrive/CodeSoom-4에서 핵심 내용을 중심으로 요약한 후에, 내용을 추가 보완하였습니다. Classicist TDD vs Mockist TDD 이번주 과제부터는 미션에 제한 조건이 걸려있었다. 모든 기능은 TDD로 구현해야 한다는 조건이었다. 강의에서 아샬님은 Mockist TDD 방식을 사용해서 아래와 같은 순서로 개발하신 것 같았다. 정상인 상황 성공 테스트 작성 → 테스트 실패 → 실제 구현 (테스트 성공되도록) → 테스트 성공 예외 상황 실패 테스트 작성 → 테스트 실패 → 실제 구현 (테스트 성공되도록) → 테스트 성공 추가로 mock을 사용하여 내부 동작을 정의할 경우에는, verify()를 통해 실제 메서드가 호출.. 2024. 3. 9. Test Code를 처음 맛보다 이 글은 필자의 이전 블로그인 https://velog.io/@beomdrive/CodeSoom-3에서 핵심 내용을 중심으로 요약한 후에, 내용을 추가 보완하였습니다. Junit 5 Aseertions ↔ AssertJ 드디어 테스트 코드를 시작했다. 1년 전부터 테스트 코드에 대한 존재를 알게 되면서, 계속 들어왔지만 따로 시간 내서 배워볼 기회가 없어서 너무 배워보고 싶었던 기술이었다. 월요일부터 설레는 마음으로 아침 일찍 노트북을 켜서 강의를 들었다. 강의에서 초반에는 Assertions의 assertEquals()를 사용하면서 첫 번째 인자에는 기대하는 값(expect), 두 번째 인자에는 실제 테스트를 진행할 값 (actual)을 주어야 된다고 설명해 주시더니, 곧바로 AssertJ라는 라이브러.. 2024. 3. 8. Spring F/W 의 소중함을 느끼다 이 글은 필자의 이전 블로그인 https://velog.io/@beomdrive/CodeSoom-2에서 핵심 내용을 중심으로 요약한 후에, 내용을 추가 보완하였습니다. Spring Framework의 편리함 1주차 과정에서는 순수 Java로 API를 만들어 보는 과제를 했었다. 순수 Java로 개발할 때는 역할에 따라 책임을 분리하느라고 많은 클래스를 생성했었다. 또한 각 객체들이 단일 책임을 갖게 하고, 담당 책임에 관련된 행위들은 모두 해당 객체가 수행할 수 있도록 응집도를 높이며 계속해서 리펙토링을 하고 또 했다. 2주차에서는 드디어 Spring을 사용해서 API를 만드는 과제였다. 아마 Test Code를 배우기 전, 워밍업인 것 같았다. 미션을 시작하며, 나는 Spring의 편리함을 이전과는 다.. 2024. 3. 7. Spring F/W 없는 API 개발 이 글은 필자의 이전 블로그인 https://velog.io/@beomdrive/CodeSoom-1에서 핵심 내용을 중심으로 요약해서 가져왔습니다. "개발"의 시작 2022년 10월 10일 월요일, 회사를 계속 다니고 있었다면 꿀 같은 연휴를 만끽하고 있을 대체 공휴일에 코드숨이 시작되었다. 8주간 코드 리뷰를 받으며 그토록 배우고 싶었던 Test Code와 JPA까지 학습할 수 있는 과정이라 매우 기대하며 강의를 듣기 시작했다. 코드숨 과정을 추천해준 지인이 말했듯이 떠먹여 주는 식이 아니라, “실습 중심”의 교육답게 일정 부분만 알려주고 나머지는 과제로 해오는 미션을 받았다. 1주차의 미션은 Framework 없이 Java를 이용하여 간단한 API CRUD를 구현하는 미션이었다. 실무를 할 때 공장처.. 2024. 3. 7. 우아한유스방을 졸업하다 5개월간의 여정 2023년 2월 11일(토)의 OT를 시작으로 2023년 6월 24일(토) 졸업 파티까지 약 5개월간의 여정이 막을 내렸다. 제이슨이 이끌어 주는 우아한유스방을 한 문장으로 표현해 본다면 아래와 같다. 압축된 커리큘럼과 좋은 환경을 통해 실무 경험을 가진 개발자가 한 단계 더 성장하기 위해 필요한 경험들을 쌓을 수 있는 멘토링 1차 과제에서는 내 자신을 되돌아볼 수 있는 질문들의 답변을 작성해 보며 퍼스널 브랜딩을 할 수 있고, 2차 과제에서는 본인이 지원하는 회사에 대해 분석하는 연습을 함으로써 기업 분석 역량을 향상시키는 경험을 한다. 3, 4, 5차 과제는 코딩 미션으로 실제 기업 과제 전형에 필요한 구현들을 미리 연습해 볼 수 있는 경험을 하며, 페어 프로그래밍을 통해 협업 능력과.. 2023. 7. 12. 페어 프로그래밍, 어떻게 하는걸까? 대상 독자 페어 프로그래밍이 뭔지 예시와 함께 알아보고 싶은 분 다른 사람은 페어 프로그래밍을 어떤 방식으로 진행하는지 궁금하신 분 시작하기에 앞서.. 최근 우아한유스방 스터디에서 세 번째 미션으로 10일간 페어 프로그래밍을 진행하였다. 페어 프로그래밍은 이전부터 관심이 많았던 협업 도구 중 하나였기에, 실무에 있을 때도 사내에서 처음으로 도입해보며 신입분과 진행해본 경험이 있었다. 하지만 그때 당시에는 너무 부족한 사전 지식과 준비로 효율적인 협업이 이루어지진 않았고, 신입 교육의 목적이 컸었던 것 같다. 따라서 이 기회를 통해 페어 프로그래밍을 조금 더 효율적으로 할 수 있는 방법이 무엇인지 알아보았고, 관련된 경험을 소개해보려고 한다. 페어 프로그래밍 페어 프로그래밍의 사전적 정의는 하나의 컴퓨터로.. 2023. 7. 6. 나는 어떤 동료일까? (feat. 직장 동료들의 피드백) 기업 분석우아한유스방 스터디에서 제이슨님이 해주시는 이직 준비 관련 강의를 듣고, 가고 싶은 회사에 대해 분석하고 정리하는 과제를 받았다. 내가 분석해야 할 기업은 어떤 비전을 가지고 있고, 어떻게 일을 하며 어떤 서비스를 하고 있는지 조사하고, 각 서비스의 조직도를 예측해 보는 미션을 받았다.기업의 JD와 회사 소개 글, 기술 블로그, 유튜브 등 다양한 채널을 통해 해당 회사가 바라는 인재상, 컬쳐핏을 분석하고 사내 문화나 업무 스타일 등을 파악했다.그 후 1차 과제에서 진행했던 퍼스널 브랜딩, 즉 나의 현재 수준과 장점 등을 고려해 해당 회사가 바라는 인재상에 내가 적합한지 끼워 맞춰보는 작업을 진행했다. 그러다 문득 내 스스로 생각하는 나의 수준과 장점보다 다른 동료들의 시선이 궁금해졌다. 나는 동.. 2023. 7. 5. 우아한유스방 4기를 참여하다 지원 내가 현재 참여하고 있는 개발 커뮤니티 중 토비님, 영한님, 기선님 등이 계신 유쾌한 스프링이라는 방에서 우아한유스방이라는 멘토링을 모집하는 것을 보았다. 우아한형제들 교육개발팀장 박재성(Jason)님이 진행해주시는 멘토링이며, 3년 차 이상의 백엔드 개발자를 대상으로 하는 과정이다. 해당 스터디에서는 퍼스널 브랜딩, 회사 분석 역량, 페어 프로그래밍, 코드 리뷰, 이력서 작성, 모의 면접 등을 통해 좀 더 나은 개발환경으로 갈 수 있도록 도와주고 재성님과 같이 좋은 소프트웨어 생태계를 만들어 가는 데에 공헌하는 것이 주목적이다. 지금 선 퇴사를 하고 혼자 공부하고 있는 나에겐 더없이 좋은 기회라 망설이지 않고 지원했다. 지원한 후 2주일이 지나고, 내가 작성한 지원서를 재성님이 좋게 봐주셔서 감사.. 2023. 7. 5. 새로운 시작 시작하기에 앞서..이 글에서는 대기업 이직기와 준비 과정, 그리고 앞으로의 공부 계획을 정리해보려고 한다.또한 마지막엔 왜 블로그를 티스토리 → velog → 새 티스토리로 다시 돌아왔는지를 간략하게 얘기하고(TMI), 앞으로의 블로그 관리 방법을 정리해보겠다. 대기업에 합격하다나는 최근에 생각지도 못했던 대기업에 최종 합격했다.누구든 한 번쯤은 보고 들었을 법한 기업에서 감사하게도 대리 직급(4년차)으로 좋은 기회를 주셨다.(많이 부족한 주니어인데도 기존 경력에 +1년을 더 인정해주셨으니 그에 맞게 열심히 기대에 부응해볼까 한다 😊) 대기업을 밟기까지는 아래와 같은 과정을 거쳤다.개발팀 4명 솔루션 SI 기업(10개월-대학교 실습&취업계) → 개발팀 30명 솔루션 SI 기업(13개월) → 멘토링 및 .. 2023. 5. 29. 이전 1 다음