안녕하세요? 오늘 세미나 잘 들었습니다. ^^ 궁금한 게 있어 글 남깁니다.
질문1) 스칼라에서 +, - 같은 연산자도 객체의 메소드로 선언이 되어 있는 거 같던데요. 사용자 정의 객체에서도 +, - 같은 연산자로 메소드 선언이 가능한지요? 만약 가능하다면, 이들 메소드에 대해서도 연산자 우선순위(*, / 가 +, - 보다 먼저 수행)가 적용이 되는지요?
질문2) 마지막 세션에서 MSA 이행 관련 질문입니다. 발표자께서는 data 를 분리한 다음, interface 를 분리하는 순서로 진행을 하셨는데요. interfacce 를 먼저 분리하고, 나중에 data 를 분리하는 것에 비해 어떤 장점이 있는지요?
감사합니다.
3개의 의견 from SLiPP
@kangdonghyeok 님 감사합니다. 2번째 질문에 대한 답변을 드리기에 앞서 세션에서도 이야기드렸지만 정답이 있는것은 아닙니다. 다만 interface를 먼저 분리하고 data를 나중에 분리 하게 되면 실제 data는 다른 도메인의 데이터와 같은 DB에 존재하게 되는데요 만일 interface를 분리하고 한두달이 지나는 상황에서 누군가가 MSA로 분리하려는 data를 다른 데이터와 join하여 사용하게 하는 코드가 새로 작성이 될때 이전에 진행했던 작업을 다시해야하는 이슈가 발생 할 수 있습니다. 관리자체를 잘 하여 그런코드가 들어오는것을 막거나 모니터링할 수 있도록(실제 저희는 그런 부분에 대한 모니터링 시스템을 만들기도 했습니다.) 하는 방법도 있지만 실질적으로 data를 분리하여 혹시나 문제를 발생하게되는 소스의 인입자체를 빠르게 차단하려는 시도였습니다.
물론 interface분리후 수일 사이에 data 분리를 진행한다면 관리비용이 크게 들지 않을 수도 있습니다. 그럴경우에는 이야기하신데로 interface를 분리 하고 진행을 하여도 크게 무방하지 않을까? 합니다.
저희가 진행했을때는 data분리후 interface로 전환하는 작업이 수주이상 소요되는 상황이였기에 위와같이 진행된 것입니다.
추가로 궁금하신점이 있으시면 이야기주시면 추가 답변드리도록 하겠습니다.
@kangdonghyeok 답변이 늦어서 죄송합니다~ 스칼라에서 사용자가 만든 클래스에서 +, -와 같은 연산자로 메소드 선언 가능합니다. 예제로 보여드렸던 (1+2) 에서 +,-는 Int 클래스의 메소드이기 때문에 사용자가 만든 클래스는 Int와 다른 클래스이기 때문에, 직접 구현하실 경우 연산자 우선순위에 맞게 구현을 하셔야할것같습니다. 다만 Int클래스를 쓸 경우에는 우선순위가 적용되어 1 + 2 * 3 = 7의 결과가 나옵니다.
@jhindhal.jhang @yumi 답변 감사합니다.
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.