Posts

다시 시작 합니다.

메세지버스  라는 서비스를 개발해서 운영을 한적이 있습니다. 휴대폰과 데스크탑을 좀 유연하게 통합 하고자 하는 뭐.. 그런 서비스죠. 열심히 버그 패치 하고, 기능 추가 하고 사용자가 많이 증가 하진 않아도, 수익이 나지 않아도,  정말 미친듯이, 본업을 마치면 밥먹는 시간빼고는 코딩하고, 테스트 하고, 기능 설계 했습니다. 그러다 보니 얼추 다운로드 수 제법 증가 하게 되었고, 백엔드 서비스 호출도 눈에띄는 증가량이 보이고, 암튼 신났었습니다. 이용자분들이 달아주시는 리뷰에 댓글로 소통도 하면서 정말 무아지경에 빠져 살았던것 같습니다. 그러다가 어느시점부터,  이용자분들과 소통을 하다보니 더 열심히 버그수정, 기능추가, 사용성 개선등등... 본업보다 이 서비스에 더 집중하고 있는 제모습이 보이고, 거기에 또 인프라 운영 비용이 생각보다 많이 발생 하게 되니,  여기서 저는 멍청한 선택을 하게 됩니다. 서비스 중단. 지금 생각해보면, 인프라비용이 좀 나오더라도, 버그있더라도 중단 없이 그냥 냅두기라도 했으면 됬었던거 같은데 미련없이, 쿨한척, 서비스를 내려버렸습니다. "바쁜일 지나가면, 스트레스 좀 사라지면.. 다시 시작 하면 되지 뭐.." 했지만 인생은 생각보다 다이나믹한 핑계들이 많이 발생 하잖아요..?ㅎㅎ 아버지 건강이 나빠지시고, 예정에 없던 결혼을 하게 되고, 아프셨던 아버지는 고통없는 곳으로 가셨고.. 그렇게 몇년이 지나고, 본업에 좀 여유가 생기니, 잊고 지냈던 메세지버스 서비스가 생각 났습니다. 다시 시작 할려고 하니 그동안 개발 환경도, 패러다임도 많이 바뀌었고..  예전 코드베이스를 들여다보니 뭐 이렇게 만들었나.. 싶은 생각도 들고(소프트웨어 개발자 분들은 공감하실겁니다.) 그래서 완전히 처음부터 다시 만들기로 마음먹고, 예전 서비스에서 제가 가장 열심이었던 기능인,  키보드 공유 기능 부터 만들었고, 운영중 입니다.  키보드 공유 기능을 나름 안정화 시키고, 슬슬 예전 메세지버스의 기능들을 하나씩 가져오려고  기존 소스와

Spring Batch : JobExecutionAlreadyRunningException: A job execution for this job is already running

스프링 배치가 운영되고 있는 서버가 예상치 못한 종료를 하게 되면 다음번 실행에 아래와 같은 예외 코드가 떨어지게 됩니다. ​ application . log . 2020 - 03 - 17.0 . log : Caused by : org . springframework . batch . core . repository . JobExecutionAlreadyRunningException : A job execution for this job is already running : JobInstance : id = 3 , version = 0 , Job = [ archiveOldChatsJob ]  ​ 잡이 시작된 시점에 메타 테이블에 STARTED 를 기록 했지만, 서버가 비정상 종료 됨으로서 결과를 기록 하지 못해서 발생 하는 현상으로 보여지는데, ​ 애초에 서버의 비정상 종료가 일어나면 안되는것이고, 일어나더라도 자동적으로 복구가 되기를 바라지만, 그 훌륭한 스프링도 배치쪽은 그렇게 많이 신경을 쓰지 않는것 같네요. ​ 우선, 일어난 문제 현상은 해결을 해야 하는데, 좀 찾아보면 몇가지 해결방안이 보입니다. 제가 선택한 방법은 메타정보가 저장되는 디비 테이블을 수동으로 업데이트 하는것입니다.  UPDATE BATCH_JOB_EXECUTION SET END_TIME = SYSTIMESTAMP , STATUS = 'FAILED' , EXIT_CODE = 'COMPLETED' WHERE JOB_EXECUTION_ID = ( SELECT MAX ( JOB_EXECUTION_ID ) FROM BATCH_JOB_EXECUTION WHERE JOB_INSTANC

자바스크립트 코딩 규약 - Javascript Code Conventions

Douglas Crockford 의 영어 원문( https://www.crockford.com/code.html )을 번역 한 글입니다. 다른 언어들의 코딩 규칙 혹은 기존의 자바스크립트 규칙들과 비교 했을때 특별한 내용은 없지만, 각각의 규칙들을 언급하게 된 이유나 기술적인 배경에 대해서 생각 해보는 시간을 가지려고 시작 했습니다. ​ 직접 번역 한내용이라, 의역 및 제 개인적인 생각도 포함 되어있습니다. (직접 번역했지만 번역기같이 표현되는게, 제 능력부족을 명확하게 보여주면서도 좀 억울하네요.^^; 적당한 표현이 떠오를때마다 계속 수정 하겠습니다.) ​ 개인적인 의견은 "역자주"를 표시 했으며, 어색한 표현들은 조금씩 추가적으로 수정을 하도록 하겠습니다. ​ ** 잘못된 내용에 대한 따끔한 지적이나 의견은 항상 감사합니다. ** 원문의 초안 자체는 공개된지 오래됬지만 2019년에 ES6 기반으로 예제코드 등이 조금씩 수정된것으로 보입니다. ​   Code Conventions for the JavaScript Programming Language Code Conventions for the JavaScript Programming Language This is a set of coding conventions and rules for use in JavaScript programming. The long-term value of software to an organization is in direct proportion to the quality of the codebase. Over its lifetime, a program will be handled ... www.crockford.com ​ ​ 2019-05-15 ​ Code Conventions for the JavaScript Programming Language ​