전체

항해 4주차는 이후에 어떤 일정이 있을지 모르지만, 구현으로는 제일 힘든 주였던 것 같습니다.  이커머스 시나리오에 대해 모든 로직과 단위 테스트를 한 주 만에 만드려고 하니, 정말 힘들었던 한 주였던 것 같습니다. 그래도 시나리오를 바탕으로 TDD 기반의 서버 로직을 구현할 수 있는 뜻 깊은 한 주였던 것 같습니다. 추가적으로, 항해에 참여하고싶다면 다음 추천 코드를 통해, 다음 과정에 대한 할인을 받아보는 것도 좋을 것 같습니다 ㅎㅎ 추천인 이름: 이철진추천인 코드: rYq2PX 이번 주차에도 많은 것들을 배우고 느꼈는데, 이를 회고해보려고 합니다.이번 주차를 지나며 겪었던 문제시간적으로 여유가 많지 않았고, 구현해야할 부분이 많아서 힘든 한 주였습니다.그래도, 직접 비즈니스 로직을 구현해가면서 놓쳤..
항해 3주차에는 앞으로 남은 7주간의 과정에서 시나리오를 선택하여 이를 어떻게 구현할 것인지에 대해 분석 및 시각화 자료를 준비하게 되었습니다. 처음에는 이러한 소프트 스킬이 많이 부족했기에, 시각화 자료를 뭘 쓰는게 좋을지 고민이 많았었는데 멘토링과 팀 활동을 통해 네트워킹을 진행하게 되면서 많은 도움을 얻었던 것 같습니다. 이번주차에서는 요구사항을 분석하고, 이를 시각화해주기 위해서 시퀀스 다이어그램을 활용했습니다. 시퀀스 다이어그램을 활용하면서 요구사항을 미리 분석하는 과정을 통해 구현 과정에서 빼 먹을 수 있는 부분들을 한 번 더 생각하게 되었습니다. 시퀀스 다이어그램 예시) 잔액 충전 Flow  추가적으로, 항해에 참여하고싶다면 다음 추천 코드를 통해, 다음 과정에 대한 할인을 받아보는 것도 좋..
항해 플러스 백엔드 6기 코틀린 언어로 진행중인 이철진입니다.현재 3주차가 진행중인 가운데, TDD & Clean Architecture 챕터에 대한 회고를 해보려고 합니다. 2주차 동안 과제를 진행하는 데 몰두한 나머지, 시간이 정말 빠르게 지나갔고 나름 TDD와 클린 아키텍처에 대한 다양한 질의질문 과정을 거치면서 많이 알게 되었습니다. 처음에는 내가 작성한 코드에 자신감이 없었기 때문에, 이번 챕터에서 과연 하나라도 통과할 수 있을까? 라는 생각이 많았는데, 팀원분들과 코치님들의 멘토링 시간들 덕분에 그동안 가장 중요하게 생각했었던 챕터의 과제 수행도 모두 완료하게 되었습니다. 남은 8주간의 과정에서도 열심히 진행하여 모든 배지를 받을 수 있도록 노력해보려고 합니다.. ㅎㅎ 추가적으로, 항해에 참여..
항해 2주차 과제를 완료하고, 지난주 나의 모습이 어떠했나를 다시 한 번 회고하는 시간을 가졌습니다. 이번주 과제 간의 문제 상황아키텍처를 잘 설계하고, DB 동시성을 제어하기 위한 과제를 진행했습니다.과제 진행 간에 좋은 구조를 만들기 위해서 계속 구조를 갈아엎는 상황이 발생하여 많은 난항을 겪었네요..  문제 해결에 대한 시도레이어드 아키텍처 기반에 컨트롤러와 도메인 계층 중간에 퍼사드 계층을 두는 방식으로 아키텍처를 설계하려고 했습니다.또한, 각 계층간에 의존성을 덜어내기 위해 DTO를 따로 두기 위해 어떻게 구현해야할까를 많이 고민했습니다.아직도 이게 정확히 좋은 구조다! 라고 말하기는 어렵고 다른 분들의 아키텍처를 보면서 이렇게도 작성할 수 있구나 라는걸 생각하게 되긴 한데 일주일 동안 최선을 ..
과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제동시성처음 동시성 문제를 단순하게 한 명의 사용자가 접근하는 방식이라 생각하여, Synchronized와 Blocking Queue를 생각했다.TDD테스트를 얼마나 작성해야할지 감이 잘 안와서 고민이 많았다. 문제를 해결하기 위해 어떤 시도를 하셨나요?동시성Q&A를 통해 동시에 여러 사용자가 접근할 수 있다는 것을 깨닳았다.이에 따라, 사용자 ID를 기반으로 인메모리 Lock을 관리하는 클래스를 만들어주었다.TDD서비스 로직에 대한 실패 위주 테스트를 진행했다.Interface를 적극적으로 활용하여 Stub 객체를 활용할 수 있도록 구현했다.OOP테스트를 진행하면서, 테스트하기 불편한 구조를 나누는 연습을 통해 객체간의 의존성을 덜어내는 시도를 했다. 문..
· 언어/java
작성 계기우리는 자바를 배울 때 javac로 컴파일 하고 java 파일로 실행하는 단계를 먼저 배운다우리가 처음 배울 때 고생했던 Java 프로퍼티가 왜 사용되는거고, Java에서 이를 어떻게 인식해서 사용하는걸까?또한, Java라는 언어는 OS 독립적으로 사용될 수 있다고 하는데, 어떻게 그게 가능한걸까?이러한 근복적인 시스템 프로그래밍적인 질문이 문득 머릿속을 지나치게 되었고 어쩌면 다른 오픈소스 라이브러리들보다 먼저 분석했어야할 Open JDK 라이브러리 내에서 JVM이 어떻게 동작하는지에 대한 분석을 시작하게 되었다 방대한 JDK 중에 무엇을 알아볼 것인가?우리가 Java 파일을 실행할 때, JVM이 어떻게 이를 인식하는지 실행흐름을 대략적으로 살펴보려한다소제목에서 말했듯이 JDK 자체가 너무 방..
· 언어/GO
context.Context작업을 취소하고, 타임아웃을 설정하며, 값들을 전달하는 기능을 제공하는 표준 인터페이스고루틴 간의 작업을 관리하고 조정하는 데 사용된다주요 기능취소 신호 전파:작업을 취소할 수 있는 기능을 제공하여, 하나의 작업이 취소되면 관련된 모든 작업이 취소될 수 있다.타임아웃 설정:작업의 최대 실행 시간을 지정하여, 지정된 시간이 초과되면 자동으로 작업을 종료한다값 저장 및 전달:컨텍스트를 통해 값들을 저장하고, 이를 다른 함수나 고루틴에서 사용할 수 있다주요 메서드Done(): 컨텍스트가 취소될 때 닫히는 채널을 반환한다Err(): 컨텍스트가 취소된 이유를 반환한다Deadline(): 컨텍스트가 작업을 완료해야 하는 시한을 반환한다Value(key interface{}): 컨텍스트에 ..
· 도서
발전하는 질서(Emerging Order)대규모 시스템이 시간이 지남에 따라 자연스럽게 구조화되고, 일관성을 갖추게 되는 과정을 의미시스템이 진화하면서 일관성과 체계를 유지할 수 있도록 돕는 설계 접근 방식특징:점진적 설계: 시스템이 진화하고 변화하면서 점진적으로 설계를 개선하고 정제한다적응성: 시스템이 환경 변화나 새로운 요구사항에 적응할 수 있도록 유연하게 설계한다일관성 유지: 변화 과정에서 시스템의 일관성을 유지하기 위해 노력한다예제:애자일 개발 방법론: 초기에는 전체 시스템을 상세히 설계하지 않고, 스프린트 단위로 점진적으로 설계하고 구현한다시스템 은유(System Metaphor)시스템의 구조와 동작을 이해하기 쉽게 하기 위해 사용하는 비유적 표현복잡한 시스템을 설명하고 이해하는 데 도움이 된다..
iron_jin
'분류 전체보기' 카테고리의 글 목록 (3 Page)