본문 바로가기

Category List118

객체가 자율적이면 뭐가 좋을까 객체 지향 패러다임의 핵심은 상속이 아니라 자율적인 객체들끼리의 협력이다. 여기서 자율은 어떻게 나오는 것일까. 캡슐화와 자율성 객체의 자율성은 객체의 외부와 내부를 판가름하는 데에서부터 나온다. 우선 객체A는 자신의 프라이버시를 외부로부터 지키기위해 (간섭하거나 접근할 수 없도록) 차단해야한다. 객체 외부B는 접근이 가능한 수단을 통해서만 해당 객체A와 협력을 맺을 수 있다. 이 협력을 통해 객체 B는 객체 A 가 무엇을 수행하는지는 알 수 있지만, 어떻게 수행하는지에 대해서는 객체 A의 프라이버시이므로 알 필요가 없다. 우리는 이것을 객체(A)의 캡슐화=정보은닉이라고 부른다. 응답과 요청, 협력 발생 캡슐화를 통해 객체의 자율성을 확보하는 이유는 무엇일까. 객체는 자기자신을 주체적으로 변경할 수 있어.. 2023. 1. 4.
입사 후, 참여했던 프로젝트 회고 2. [21년 10월 ~ 21년 02월] 새로운 도메인을 위한 데이터 마이그레이션과 그 이후 더보기 1차 데이터 마이그레이션 세 개의 새로운 도메인에 대하여 새로운 데이터가 출현했고, 과거 데이터를 spring batch를 통해 함께 이관시킴. 약 4천 건의 프로덕트 맵핑 데이터 생성 약 9만 건의 유저에 대한 월렛 데이터 생성 약 1만개에 대한 멤버십 데이터 생성 이에 따라, 유저가 소유한 서비스 권한 및 멤버십이 기술화됨 2차 데이터 정합성 맞춤 알림 서로 다른 도메인이지만 한 싸이클 내에서 정합해야하는 데이터들이 있음. 유저의 서비스 권한 - 이용할 수 있는 티켓 - 환불 이력 정합성 불일치 시, 메일 / 슬랙 알림이 오도록 자동화. 10분에 한번씩 Event Bridge - Lambda 트리거를 .. 2022. 11. 16.
여을심은 그동안 어디서 뭘 했을까 백문이 불여일타 입사 후 5개월 쯔음인가. CTO님과 페어를 하다가 엄청 혼났다. Optional 로 구현된 로직의 테스트 케이스를 성공시켜보라고 하셨는데, 내가 거기서 아둥바둥대며 아무것도 하지 못했다. 그동안 공부를 나름 한다고 해왔는데, 조금의 압박감으로 아예 머릿속이 하얘지는 게 바보같았다. 이 날을 계기로 그동안의 공부방식을 되돌아봤었다. 나는 머리만 커지는 공부를 하고 있었다. 이런 저런 지식만 쌓고 막상 구현하려면 손이 느리고 내 것으로 만든 적이 없으니까 응용도 하지 못하고, 좀만 코드가 달라져도 이해하는데 많은 시간이 걸렸다. 머리보다 손이 빠른 공부를 해야겠다 다짐했다. 학学보다는 습习에 많은 시간을 투자하기로 한거다. 블로그를 잠시 중단한 이유다. 블로그 포스팅은 생각보다 많은 시간이.. 2022. 11. 4.
[Spring Test] Test LifeCycle Today’s Study Topic Test LifeCycle Junit의 생명주기? 일반적으로 테스트 생명주기는 Method 를 기준으로 한다. TestInstance 생명주기가 어떻게 유지되는지 살펴보고 싶었다. 우선, TestInstance의 생명주기를 Intercept하는 Extension을 작성해보았다. Intercepting Invocations를 대충 번역한 바로는 "호출 가로채기" 였다. InvocationInterceptor는 테스트 코드에 대한 호출을 가로채기 위한 API를 정의한다. package kr.co.yeoeulsim.eatgo.domain; import javax.transaction.Transactional; import lombok.extern.slf4j.Slf4j; im.. 2022. 2. 27.
[Spring Test] Spring TestContext Framework Prolog 스프링 4독을 앞두고 있다. 3독까지 해보니까 레퍼런스 전체적으로 자주 나오는 몇가지 키워드가 있다는 걸 알게되었다. 그래서 많이 등장하는 키워드를 한번 다 적어보았다. 그리고 실제 테스트를 돌려보았다. 많이 보았던 키워드들이 정말 많이 등장했다. 뭔진 모르겠지만 내가 앞으로 레퍼런스를 읽을 때 도움이 되겠구나. All above listeners have a specific responsibility in Spring integration tests execution. For example, DependencyInjectionTestExecutionListener provides support for dependency injection and initialization of test in.. 2022. 2. 2.
[Spring Test] private로 선언된 메소드를 어떻게 테스트 할 수 있을까 Today’s Study Topic private로 선언된 메소드를 어떻게 테스트 할 수 있을까. 업무를 하다가 private으로 되어있는 필드에 직접 접근해야하는 상황이 있었다. 당시에는 어쩔 수 없이 바로 public으로 변경했지만,, 찝찝했다. private로 선언된 메소드 또는 필드를 테스트하기 위해 public 으로 변경하는 것이 과연 맞을까? 일반적으로 테스트를 위해서 production 코드의 접근 범위를 넓히는 것이 허용되는 걸까? 클래스의 노출 범위가 커지게 되는 건데,, 그럼 private로 선언된 메소드나 필드를 어떻게 테스트 하지? 그로부터 한달이 지났나. 잊을 듯 말 듯한 시기에 관련 팁을 하나 얻었다. Spring Test Reference를 읽다가 private 필드, 메소드에.. 2022. 1. 23.