본문 바로가기

가치관 쌓기/개발 돌아보기46

빠르게 실패하기(fail-fast) VS 안전하게 실패하기(fail-safe) 이 주제에 대해서 "엘레강트 오브젝트-조영호 번역" 책에서 다루고 있습니다. 이론상으로만, 이해하고 있었습니다. 그러나, 최근 사내 서비스를 트러블 슈팅하며, 다른 분의 코드를 리뷰하며 이 주제에 대해서 말할 수 있었던 기회가 있었습니다. 그러나, 역시 이론과 코드에는 거리감이 있었고, 그 상황에서 저또한 명확하게 설명하기 힘들었습니다. 저 스스로는 빠르게 실패하기 를 실천하기 위해서 코드 상에서 노력하고 있는데, 이것을 누군가에게 설명하려니 잘 안되더군요. 그래서 팀원분에게 이 부분을 설명해주면서 헀던 이야기를 공유합니다. 먼저 빠르게 실패하기와 안전하게 실패하기에 대해서 이론으로 살펴보고 난 뒤에, 코드로서 살펴보겠습니다. 이 두 가지는 적절한 상황에 잘 활용하는 것이 중요하지만-, 만약 코딩 중에 .. 2021. 4. 16.
동시성에 대해서 생각해보자. 하나의 자원에 여러 프로세스 또는 스레드가 사용하려고 할 때. 사용되는 영역을 임계영역이라 하고, 자원을 점유하기 위해 여러 동시성제어를 할 수 있는 도구를 사용한다. 그럼 여러 동시성제어를 할 수 있는 도구란 무엇을 말하는가? 개념적으로는 뮤텍스, 세마포어, 모니터 가 있을 것이고 실제 코드는 `java.util.concurrent` 패키지에 담겨있다. 그 외 실행자 프레임워크, 동기화 장치(synchronizer) 등이 존재합니다. Java에서는 실행자 프레임워크를 통해서 작업하길 권고하고 있다. [이펙티브 자바 Item81] 그 이유는 위에서 언급한 뮤텍스, 세마포어, 모니터를 조작하기 위해서 wait, notify와 같은 코드를 작성해 동시성을 제어해야 하는데, 이때 복잡성이 더 커지기 때문이다... 2021. 2. 9.
JPA 연관 관계를 명시(사용)하는 이유는 무엇일까? 이 글을 작성하기 앞서, 절대 이 글은 JPA가 RDBS와의 패러다임 불일치를 해결하는 좋은 도구라는 것을 인지하고 있으며, 아래 글을 앞서 언급한 내용을 말하고자 작성한 것이 아니기 때문에 이 점 유의부탁드립니다. 아래 내용은 어디까지나 제 의견일 뿐이고, 맞지 않을 수도 있습니다. 스프링 부트를 활용하는 프로젝트에서 대부분 우리는 ORM으로 JPA를 사용합니다. 왜 그럴까요? 저같은 경우 인프런의 김영한님의 강의를 들으면서 JPA는 RDMS와 객체지향의 패러다임 불일치를 해결해주는 좋은 도구라는 것을 시작으로 JPA를 학습해왔습니다. 또한 개발 트랜드 라는 것이 한 몫했던건 아니였을까 싶기도 합니다. 아마도 앞서 말한 개발 트랜드는 아래와 같은 그래프를 말하는 거겠죠? 이런 행위가 혹시 귀찮다고 여기.. 2021. 1. 16.
테스트 주도 설계를 실천한다는 것 밥 로스 로스가 대중에게 인상적인 모습을 보인 것 중 하나가, 그림은 형태를 정하고 하나하나 디테일을 정해가면서 그려 나아가는 것이라는 일반인의 고정관념을 깬 것도 한몫 한다. 이미 그린 수풀이 붓으로 몇 번 칠하니 호수가 된다든지 하는 모습은, 그때그때 마음가는 대로 그려 나아가는 것이 낭만적이라는 느낌을 주기도 한데다, 유화를 배우지 않은 일반인 입장에서 보면 신기할 수밖에 없다. - 밥 로스에 대한 평가 우리는 밥 로스라는 사람을 알고 있습니다. 누가봐도 어려운 그림을 "참 쉽죠?(That easy)" 라는 대사로 유명한 밥로스는 그림을 그리는 방식이 특이하다고 합니다. 그림을 그릴 때, 밥 로스는 하얀 캔버스 위에 아주 약간의 덧칠로서 그림 전체의 윤곽을 만들어 완성 시키면서 그 다음 스텝을 이어.. 2020. 12. 18.
Hibernate, JPA, Querydsl는 과연 좋은 도구일까? Photo by Annie Spratt on Unsplash 오늘도 여전히 사이드프로젝트를 진행하며 함께 하는 형님과의 대화에서 또다른 깨달음을 얻었습니다. 들어가기 최근 회사에서 시간이 남아, Querydsl 을 사내서비스에 적용하는 방안을 고려하기 위해서 학습하던 중, 나왔던 이야기입니다. Querydsl, SwaggerCodegen, ProtocalBuffer 등의 도구들은 이전에 가졌던 문제를 제 3의 관점으로 넘겨, 개발자는 비지니스 로직에만 집중 할 수 있게 해준다는 관점에서 좋은 도구라는 이야기를 남겼었습니다. 그러나, 이전에 지인과 식사를 하면서 가볍게 Querydsl과 Jpa 의 단점을 이야기 하면서 나눴던 부분에 대해서 내용을 남겨두면 좋겠다 싶어 이렇게 포스팅하게 되었습니다. 우리가 .. 2020. 10. 16.
코딩은 어떻게 해야하는가? - 1 항상 피플웨어라는 책을 교보문고에서 찾아본다면, 그 책은 개발서적 가운데에 꽂혀있다. 왜일까? 왜 '피플웨어' 책은 개발서적 사이에서 '나를 읽어주십시오~' 하는걸까? 실제 그책은 경영/관리 주제로 분리되어 있음에도 불구하고? 그 답은 내마음대로 정의내려보고싶다. 심지어 '피플웨어' 책은 10년전에 우리나라가 개발은 3D라 외치던 시절에 출간되었다. 왜일까? 그 당시 프로젝트 하나라도 더 빨리 출시하기 위해 사람을 갈아?서 마셨다는 시절에 미국에서는, 이미 피플웨어라는 책이 출시되 많은 인기가 있었다. 어쩌면, 사람이 우선순위라는 사실에 대해서 인지하고 있었을 수도 있다. "인간 관계는 복잡할 뿐만 아니라 그 파급 효과가 절대로 깔끔하고 명확하지 않지만 업무의 어느 측면보다 더 중요하다." - 피플웨어 .. 2020. 7. 25.