otwm
1k
2016-09-25 11:02:39.0
19
1999

간만에 프로젝트 환경 구성 및 수행하면서....


그냥 구성하고 나서 생각나는 거 몇자 끄적입니다.

일단 기본 기술 셋은 대충 이렇습니다. java8, spring boot , spring data, tiles , querydsl(4.1.3), npm ,bower , materialize , lombok . 간만에 구성하는 데 잘 안되는 거 잇어서 되게 애먹었어요. ㅎㅎ

그래서 하면서 느끼는 거지만, Java는 하여간에 복잡하다. 뭐 디자인 적으로 불만은 없지만 하고 나면 느끼는 거는 복잡하다.(내가 잘 몰라서 일지는 모르지만,...) 때로는 꼬이기 시작하면 참 힘들어져요.

예전에는 이러한 복잡함과 이러한 복잡한 셋팅이 미덕(?)처럼 느ㄲㅕ졌었지만, 이제는 좀... 

그래서 그걸 보안하려고 나온 스프링 부트, 일단 그런 부분에서 굉장히 좋지만, 기본적인 설정에서 벗어나기 시작하면, 역시나 추가적인 학습 곡선이 발생해요. 

개발자야 내용 보면 뭐 음.. 잘햇어 할 수도 있겠지만, 담당자들이야 그런거 모르잖아요? 네 뭐 그렇다는 거구요. 

사실 그래도 java 사용하면, spring, spring boot 가 가장 문안한 선택인거 같기는 합니다. 자바로 개발하면 앞으로도 비슷한 선택을 많이 할 거 같긴하네요. 적어도 당분간은요.


그리고 querydsl이거 ... 아...현재 3.x 대 셋팅 안되네요. 뭐지?? 부득히 4.x 대로 올렷어요. 4.x 대는 api 가 조금 달라요. 되던게 안되서 갑작스레 굉장히 당황했었네요.

그냥 묻고 따지지 않고 버전 올렸습니다.(하 될되로 되라죠.ㅋ =ㅅ=). 그리고 여기서 발생하는 또하나의 문제 Q~ 클래스 생성할 때 보통 generated 폴더 추가 하잖아요. 일단 4.x 대에서는 그리고 ide에서 

사용할 때, circular 참조가 발생하면서, 이 역시 안됩니다. 꽁수도 써봤지만 안됩니다. 이건 ide 상에 문제인거 같아요. 결국 추가 폴더 없이 해당 패키지에 그대로 생성했어요. ㅎ ;;;;

하나 더 특이한 경우를 본게 디비 역시 멀티 디비 셋팅이었는데, 하나는 마리아 디비, 하나는 mssql 이렇습니다. 마리아만 쓸때까지는 아무 문제 없엇는데, mssql 추가 하니까 바로 마리아 디비에 

hibernate_sequence 테이블을 생성하네요.;; 이 역시 각 테이블마다 생성 전략을 직접 지정해줘서 피하기 했습니다만,... 왜 이런 문제가 생기는 건지,... 각각의 데이터 팩토리도 패키지 설정이 독립적으로

되어 있는데도 말이죠. 암튼 그냥 ... 뭐 내가 하는게 그렇지 뭐 하는 맘으로..ㅋ 넘어갔어요.


그리고 여기서 부턴 JPA 까는 얘기, 일단 상속관계로 테이블 설정하고 하면 현 스프링 데이터 버전에서 버그가 발생할 수 있습니다. 고쳐진지 모르겠습니다만, (3달 전 정도 이야기). 완벽하지 않다는 이야기죠.

그리고 제가 선호하는 select 방식은 스프링 데이터 방식 > 쿼리 dsl > jpql > native 입니다만, 먼저 스프링에서 predicate 사용해서 멋지게 쿼리하는 방법(여기에도 몇몇 옵션이 꽤 존재 하죠.) , 정말 아름답죠.

정말 좋습니다 만~, 안되는 쿼리가 꽤 있어요. 그래서 그 다음 선택하게 되는 query dsl, entity manager를 주입해야 하는 수고도 있고요, 기존의 작성했던 레포지토리도 꽤 많이 바꿔야 하는 번거로움이 있죠. 

아 진짜 번ㄱㅓ로워요. 그래도 일단 쓰기 시작하면 나쁘진 않아요. 역시 추가적인 학습비용이 발생하는 것만 빼면. 그래도 안되면 jpql쓰죠. 여기서 부턴 별로 쓰고 싶지 않지만, 때로는 native 도 많이 써요.

통계 할 때면 의외로 많이 쓰는거 같아요. 그래서 JPA의 최대 단점은 각각의 쿼리 방식이 호환되지 않는 다는 거에요. 멋지게 스프링 데이터로 짜놨어도, 어느 순간 짜 노은 걸 다 바꿔야 할 수도 있어요. ㅠㅠ


그리고 spring boot 쓸 때는, 제 생각에는 jsp를 사용하는 건 별로라고 생각되네요. thymeleaf 쓰던가 아니면 spa를 선택하던가. 이게 ide랑 역이면서, 흠흠... 근데 thymeleaf가 나쁘진 않은데, 약간의 학습곡선이

발생하는 거 어쩔 수 없죠. 여기서 spa 를 생각하게 되는데, angular 1을 사용하면 괜찮지만, 기왕이면 좀 더 괜찮은 거 쓰고 싶죠. react 를 쓰게되면 훨 쒼 더 큰 학습곡선이..ㅎㅎ

물론 react 자체는 쉽다고 말할 수 있겠지만, 어디 그런가요? 그냥 react만 쓰지는 않잖아요. 어쨌든 thymeleaf 대비 더 큰 학습곡선인거는 맞는 거 같아요. 근데 thymeleaf 하자니, 기왕 뭔가 배우는 거면 

좀 더 대세(?)인거 하고 싶잖아요. 암튼 조금 고민되기는 하지만, 현재는 결국에 react로 가는 방향으로...


아무튼 그래서 결론은 java는 뭔가 복잡하지만, java를 사용하게 되면 그냥 의례 이렇게 하게된다는 거?

0
0
  • 댓글 19

  • devamu
    3k
    2016-09-25 16:25:35.0

    무슨말씀을 하고싶은지 도저히 모르겠네요 ㅡㅡa

    문법 지적 죄송하지만 문법도 그렇고 글이 너무 읽기 힘들어요.. 내용이ㅠ

    0
  • 머슴
    3k
    2016-09-25 16:54:16.0

    우주선 발사 시스템 개발하나요.

    모르는 요소기술 너무 많아요.

    님처럼 누군가 또 힘들어 하겠어요.

    0
  • 노는개발자
    5k
    2016-09-25 18:44:13.0

    혹시 쉬운거 복잡하게 만드는 능력이 있으신지요....

    --

    0
  • 기분전환
    1k
    2016-09-25 23:29:12.0

    통합 ide 스시면 롬복 필요 없궁.. 기타 기술 조합도 어느것을 추구 하시는 일관성이 좀...

    0
  • 더미
    3k
    2016-09-26 08:14:16.0

    앵겔라가 리액트보다 러닝커브가 높은거 같던데요..

    0
  • 아만다
    532
    2016-09-26 16:47:35.0
    알아보기힘든 외계어같은 느낌?
    0
  • otwm
    1k
    2016-09-26 17:02:36.0

    아 그냥 해보고 주절 대는 거라 ..ㅎ 별로 뭐 공감하시는 부분이 없을 수도 있겠네요.

    > 머슴 

    기술요소가 복잡할 수도 있는데, 대부분은 거의 근래에 많이 쓰는 것들만이에요. 특별히 모를 만한 마이너한 건 없어요.


    > 기분전환

    목표라기 보다는 그냥 아주 일반적인 형태의 java 기반 웹 환경 구축?에 적합한 형태 겟지요.


    > 더미

    angular 1 기준으로는 아마도 react 가 훨쒼 러닝 커브가 높지 않나요? 단지 react만 보면 그렇지 않을 지 모르지만, redux, 서버사이드 렌더링나 뭐 기타 그외의 여러가지 부수적인 것들 , 실제로 react 만 가지고 개발하기 어려우니..



    0
  • otwm
    1k
    2016-09-26 17:07:03.0

    그냥 뭐랄까 이번에 프레임 워크 변경되는 부분도 많았고(querydsl 같은 경우), 알게 모르게 버그도 있고, 근데 어딜봐도 친절하게 설명해 주는 곳은 많치 않고 ... 사실 하나씩 이야기 해야 맞지 싶지만, 어쨌든 그냥 필 받아서 썻다고 할까요?

    0
  • 더미
    3k
    2016-09-26 19:59:09.0

    리액트를 보는데 다른게 나올 이유가?

    0
  • otwm
    1k
    2016-09-26 20:17:40.0
    리액트는 단지 뷰만을 처리하니까 데이터 처리나 실제 화면단에서 데이터 처리하기 위해서는 redux나 플럭스 같은 것 중에 어느것을 선택해야 하는 지 결정해야 겠지요. 요새는 es6나 웹팩도 많이 쓰고, redux-thunk나 리엑트 라우터 같은것도 알아야 할 것이고, 당연히 테스트 생각하면 모카를 쓸건지 jest를 쓸건지도 고민이 될 거고, 딱 리엑만 보게 되면 뷰말고는 처리할 수 있는게 없으니까,... 실제로 뭔가 제대로 만들고자 한다면, 리엑트와 같이 사용되는 여러가지 것들에 대해서 고민이 생기니까요. 이런 부분에 대해서 앵귤러의 경우는 구글이 딱딱 정해놓은 듯한 느낌이 드는 반면에 리엑트의 경우는 리엑트와 플럭스 , 제스트 말고는 사용자의 선택에 다 돌리다 보니 고민이 많이 되죠. 일반적으로 리엑트 보다 보면 이런 부분에서 많이 고민하지 않나요?

     

    0
  • 더미
    3k
    2016-09-26 20:45:38.0
    그런게 러닝커브는 아닙니다만..
    0
  • otwm
    1k
    2016-09-26 22:14:10.0 작성 2016-09-26 22:14:55.0 수정됨

    러닝 커브가 학습 곡선 이란 말이자나요? 다른 뜻이 잇나요?

    0
  • 더미
    3k
    2016-09-26 23:13:33.0

    네 학습곡선이죠. 리액트만으로 안되니 다른건 고민하는건 학습곡선이 아니죠.

    0
  • otwm
    1k
    2016-09-26 23:47:16.0 작성 2016-09-27 00:11:44.0 수정됨

    네, 고민 자체는 학습이라 할 순 없지요. 하지만 그만큼 선택해야할 것이 많은 만큼 학습량 자체가 훨쒼 높다는 거에요. 이게 단지 리엑트만 보고 쉽네 라고 하기에는 실제로 그래서 스터디 하는 양 자체가 많다는 거에요. 그리고 고민이라고 표현했지만, 우선 고민하려면 알아야 되요. 적어도 프로타입 작성은 가능하고 기술의 특장점 정도는 이해되는 선까지는 학습이 되어야 되요. 그런 다음에 '고민'이 가능한 거잖아요.


    학습곡선과는 별개로 여러가지 기술 선택이 가능한 상황에서는 하나를 선택하면 자연스럽게 다른 하나는 버려야 되요. 이를 테면 플럭스와 redux를 같이 쓸 수는 없잖아요? 근데 둘 다 모르는 경우에는 어떤 것이 나은지 알기 위해 최소한의 프로타입핑과 기술의 개요 정도는 보야되고, 커뮤니티 역시 주시하면서 어떤것이 좋은 지 의견을 보잖아요. 이후 정말 그러한지를 따지면서 선택을 하게 되는 데 , 이 과정에서 자연스레 공부 했으나 선택 받지 못한 기술은 자연스럽게 버려지게 되죠. 이런 게 상대적으로 리엑트가 앵귤러보다는 많다는 거죠.

    0
  • 더미
    3k
    2016-09-27 00:28:00.0

    아니 그러니까 그게 왜 리액트가 학습량인데요. 

    배워서 써먹는데 필요한걸 러닝커브라 하지

    그걸로 못 하니까 다른걸 배우는거 까지 러닝커브로 보진 않아요.






    0
  • otwm
    1k
    2016-09-27 10:15:46.0

    으음..? 싸우려는 건 아니고. 문자 그대로 리엑트  학습량만 따지면 더미님 말씀이 맞는데, 학습량 따지는 이유 자제가 실무에서 사용했을 때 부담이 어느정도 인가를 가늠하기 위해서 따지는데, 실무에서 오로지 리엑트만 사용할 것도 아니고, 리엑트만의 학습량을 논의 하는 것이 의미가 있는 걸까요? 일반적으로 기술 습득하게 되면 보통은 하나의 독립적으로 사용되는 것이 가능하기에 그 기술 자체만 가지고 논의하는 게 맞겟지만, 리엑트의 경우에는 딱 그거 하나만 쓰는 경우는 거의 없지 않나요? 대부분의 책을 보더라도 그냥 리엑트만 보여주는 경우는 거의 없잖아요?

    이게 그냥 관점의 차이 일 수 있는데, 앞에서의 부연설명에서도 그렇듯 , 실제로 일반적인 상황에서 리엑트라는 기술 자체 독립적으로 쓰이지 않는다고 전제하는 이야기에요. 상급자나 담당자가 또는 그 누구 더라도 리엑트에 대한 학습량을 이야기  할때, 아무런 전제 없이 오직 리엑트의 학습량만을 이야기 하진 않을 것 같은데요?

    0
  • 더미
    3k
    2016-10-01 14:26:16.0

    저도 싸우자는건 아닙니다.

    글쎄요. 관점의 차이일 수 있겠지요. 

    제가 리액트를 배운다면 리액트만 배워서 바로 쓰면 됩니다.

    앵겔라도 같구요.

    이런게 일반적인 전제인데 다를수도 있겠죠.

    0
  • otwm
    1k
    2016-10-01 16:52:23.0

    네네 관점에 차이일 수잇죠. 리엑트만 순수하게 배운다면 오직 컴퍼넌트 조합과 스테이트, 프롭, 컴퍼넌트 사이클 딱 요정도만 익히면 되나까, 짧으면 하루고 길면 3일 정도면 되겟네요. 실제로 가능한건 화면그리는 데 그치겟지요. angular는 그냥 공식 사이트에서 테스트 부분 제외하더라도 훨쒼 배우는 게 오래걸릴거고, 이랫을때는비교대상도 아닌것이 한쪽은 뷰만 처리하고 한쪽은 테스트 제외하고 전범위를 다 다루니까요. 오해가 있었다면 이런 사전의 전제가 없엇다는 거겟죠?

    0
  • otwm
    1k
    2016-10-01 16:56:18.0

    흐흠 근데 오직 리엑트만 배워서 바로 쓴다는 건 잘 이해가 안가는 부분 이긴 하네요?쓸 수 거의 없거나 별로 의미 없지 않나? 싶기도 하고, 문제를 복잡하게 인식하는 걸까요? 아무튼 잘 이해가 안가는 부분 이긴 합니다.

    0
  • 로그인을 하시면 댓글을 등록할 수 있습니다.