복잡한 업무 코드를 빠르게 분석하기
업무가 너무 복잡해서 어디서부터 어떻게 개발해야 할지 모르겠어요. 필자가 전자 상거래 회사에 입사한지 얼마 되지 않았을 때 매일 같이 야근하던 개발자가 한 말이다. 업무가 복잡하다니 무슨 말인지 감이 잘 오는 독자도 있으리라. 필자 역시 아래 말을 듣기 전까지는 감이 오질 않았다. 오늘은 주문 24단계 중 10단계를 설명하겠습니다. - 어느 개발자가 업무
업무가 너무 복잡해서 어디서부터 어떻게 개발해야 할지 모르겠어요. 필자가 전자 상거래 회사에 입사한지 얼마 되지 않았을 때 매일 같이 야근하던 개발자가 한 말이다. 업무가 복잡하다니 무슨 말인지 감이 잘 오는 독자도 있으리라. 필자 역시 아래 말을 듣기 전까지는 감이 오질 않았다. 오늘은 주문 24단계 중 10단계를 설명하겠습니다. - 어느 개발자가 업무
스토어에 등록된 다양한 앱들을 보며, "와! 이 앱은 코드를 어떻게 구현했을까?" 궁금했던적이 있었나요? 필자의 경우엔 "앱 소스코드", "앱 디컴파일" 등 키워드로 구글 검색을 해가며 하나씩 호기심을 해결했고, 마침내 iOS 앱은 IPA (Ios app store PAckage) [1] 를 맥북에 다운로드 해서 파인더로 패키지 내용 보기를
해당 코드는 Github를 확인해주세요. Spring boot 2.2 버전부터는 Junit5 디펜던시를 기본으로 포함하고 있습니다. Junit5 주요 테스트 어노테이션과 Spring boot에서 활용법을 정리해보았습니다. @ValueSource @ValueSource어노테이션을 사용하면 배열을 값을 테스트 메서드로 손쉽게 전달할 수 있습니다. @ParameterizedTest @ValueSource(strings = ["", " "]) internal fun `isBlank `(value: String) { print("value: $value "
쇼핑몰의 주문 상세 화면은 일반적으로 주문 내역과 배송 정보, 결제 정보 등을 보여준다. 이럴 때 하나의 데이터베이스를 사용하는 모놀리틱 아키텍처Monolithic Architecture에서는 여러 테이블을 조인하면 되지만 다수의 서로 다른 데이터베이스를 사용하는 마이크로서비스 아키텍처Microservice Architecture에서는 여러 마이크로서비스의 데이터베이스에 정보가 들어 있기 때문에 데이터베이스의 물리적 조인이 어렵다. 따라서 마이크로서비스 아키텍처에서 주문 상세 화면은
해당 코드는 Github를 확인할 수 있습니다. JPA를 사용하다면 보면 N+1문제를 많이 만나게 됩니다. 그에 따른 발생 원인과 해결법을 정리해보았습니다 ERD @Entity @Table(name = "member") class Member private constructor() { ... @OneToMany(mappedBy = "member", fetch = FetchType.LAZY) var orders: Set<Order> = emptySet() private set } @Entity @Table(
* 원문제목 : Introducing Javalin: a Lightweight Web Framework for Java and Kotlin * 원문링크 : https://www.infoq.com/news/2019/07/javalin/ 독자분들의 이해를 돕기 위해 역자의 설명을 많이 추가하여 원본 글의 의도와는 다소 다를 수가 있으니 원본글도 같이 참고해주세요. 본문의 예제 코드 대부분은 Java10+ 문법을 기반으로 작성되었으나, 몇 개 예제는 Kotlin으로
#꼰대개발자가살아온이야기 #05 전제) 개인적인 사견일 뿐이고, 제 경험을 공유하는 것일 뿐입니다. 교육 개발자 교육이란게 대체 무엇일까요? 전 교육 전문가는 아니라서 정의하기가 좀 뭐하지만... 그래도 제 경험을 바탕으로 정의를 내려보자면 ”스스로 찾아서 공부할 수 있도록 서포트해주고 가이드 해주는 것” 물론 흔히들 말하는 주입식 교육도 분명 필요합니다. 기본(?)적인 사항은 외워야 하거든요~
#꼰대개발자가살아온이야기 #04 전제) 개인적인 사견일 뿐이고, 제 경험을 공유하는 것일 뿐입니다. 독서 하늘이 높고 말이 살찐다.”는 천고마비의 계절이 돌아왔습니다. 제가 가을을 탄다는 말은 아니고 이 시기에 책을 사시는 분들이 제 주변에 많이 보입니다. ^^ 그것만으로도 반은 성공했다고 생각합니다. 읽든, 안읽든... 마음만이라도... 그런데 절반이 아닌 그 이상의 성공을 바라시고 구매하시자나요? 제가
#꼰대개발자가살아온이야기 #03 전제) 개인적인 사견일 뿐이고, 제 경험을 공유하는 것일 뿐입니다. “취업문” 굉장히 핫 한 단어죠?? 신입/경력 너나 할 것 없이 이 놈의 취업문으로 인해 힘들어하시는 분들이 많습니다. 이게 참 아리송한 문제인데 열심히 준비했고 노력했는데 왜 나는 취업이 안될까?”라는 생각을 하는 사람만 있지. 취업이 쉬웠다고 하는 사람은 너무
#꼰대개발자가살아온이야기 #02 전제) 개인적인 사견일 뿐이고, 제 경험을 공유하는 것일 뿐입니다. “Work-Life-Balance” “일과 삶의 균형” 워라밸의 유래를 살펴보면 이 표현은 1970년대 후반 영국에서 개인의 업무와 사생활간의 균형을 표현하는 work-life balance 라는 단어로 처음 등장했다고 합니다. (출처. https://fs-reader.tistory.com/186) 야근 문화가 너무 당연시되는 한국
#꼰대개발자가살아온이야기 #01 전제) 개인적인 사견일 뿐이고, 제 경험을 공유하는 것일 뿐입니다. 내 인생의 첫 면접은 한국교원대학교 수학교육과 입시면접이었다. 1박 2일 코스였고 시험도 보고 면접도 보는 일정이었다. 벌써 20년도 지난 이야기라 기억이 명확하지 않을 것 같지만 지금까지 뇌리에 박혀 있을만큼 당시에는 큰 충격이었다. 어찌보면 이 일로 인해 수학교육과를 포기했을지도 모른다. 다른
해당 코드는 Github에 공개되어 있습니다. 스프링에서는 JSR 303 기반 어노테이션 기반으로 일관성 있는 Validation을 진행할 수 있습니다. 하지만 @NotNull, @NotEmpty, @Email과 같은 검증은 가능하지만 비즈니스적에 맞는 Validation은 별도로 진행해야 합니다. 예를 들어 주문에 대한 결제 정보를 받는 경우 카드 결제 시에는 카드 정보, 무통장 결제에는 계좌 정보를 입력받아야 합니다. 해당