보통 회사에서 면접에서 이런 질문을 한다고 한다
프로젝트를 하면서 가장 힘들었던 점은 무엇이에요?
어떻게 해야 프로젝트를 성공할수 있을까요?
뭐 이런 질문을 한다고 하는데.. 이 질문에 답할수 있게 나의 경험을 정리 하고자 한다.
우선 내 소개를 하자면, 나는 에임시스템에서 3개의 프로젝트를 경험했다.
모두 중국에서 프로젝트를 했고,
첫번째는 상해
두번째는 상해 워런티 플젝
세번째는 중국 창사 플젝이었다.
프로젝트에서의 나의 역할은
Frotend
- 멘티스로 올라온 고객의 요구사항을 분석
- winform 위에서 C# 으로 구현
backend
- 회사 자체 엔진위에서 java를 이용해서 백엔드를 구현
- 사용할 쿼리를 미리 개발하고 (사용할 쿼리 자체가 db에 이미 저장시켜놓는다.)
- 테이블 설계
(테이블 설계라는게 사실 해당 분야의 도메인을 잘 이해한다면, 어렵진 않다. 이해를 못하면, 어렵다. 그래서 어렵다 ㅋ)
기타
- 멘티스를 관리 ( 관리라는게, 사용자 할당하고, 프로젝트 만들고, 멘티스 규칙 세우는 정도?)
- svn을 관리 (마찬가지로 사용자 할당)
- 스트레스 테스트 ( 보통 처음에 스트레스 테스트를 하는데, 조금 도와주는 정도? )
- 야간 대응.. (MES 개발자의 숙명.. 이건 정말 최악으로 힘들다 새벽 3시에 일어나서 갑자기 개발한다고 생각해봐라..)
troble shooting
- 시스템에 이상이 있었을때 문제를 해결 -> (요것이 말이 쉽지만 ㅋㅋ 어렵다.)
# 문제라는것을 정의하고 문제를 찾기 위해 별의 별 짓을 다한다
# ap log, db history , oracle awr 분석, gc log 분석, 소스 분석 등등...
데이터 보정
- prd data 보정
(데이터가 잘못 들어갔거나 문제가 생겼을때 보정을 해주는데 정말 이게 세상에서 제일 힘들고 어렵고 무섭다)
뭐 이런 일들을 했던것 같다. 거창하게 막 썼지만, 하나씩 보면 어려운 내용들은 아니다.
프로젝트를 하면서 직면한 가장 어려운 문제들
#1 dsp 서버 oom
- dsp 서버에서 outofMemory 가 발생한다고 한다.
- 나도 당시에 잘 몰랐기 때문에 할수 있는 모든 방법을 동원해서 해결하려고 노력했다.
노력한 방법 1
java 의 최소 메모리 최대메모리 증가 1gb 2gb -> 2gb 4gb 로 증가시킨뒤 지켜보기 -> 또 발생함
노력한 방법 2
gc log 옵션 변경 및 log data 분석
당시에 gc로그란것을 알게되서 분석해보았다 ㅎ 하지만 문제해결에는 큰 도움을 주지 못했다
왜냐면 gc log 자체는 gc 가 발생한 시간에 대해서 기록한건데, 이건 말그대로 out of memory의 원인 파악이 아니라
원인에 해당하는 결과만 알수 있었다. ( 메모리 사용양이 많아!! 그니까 gc가 계속 발생해!! 이 사실만 알수 있었다. )
그래서 다음번엔 아마 gc는 가장 늦게 건드릴것 같다
혹시라도 분석방법이 궁금하시면
gceasy.io
How to enable Java GC Logging? For Java 1.4, 5, 6, 7, 8 pass this JVM argument to your application: -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc: For Java 9, pass the JVM argument: -Xlog:gc*:file= file-path: is the location where GC log file will be
gceasy.io
이 사이트에서 분석하면 된다 그냥 gc log를 업로드하면 분석해준다.
노력한 방법 3
out of memory 발생시 힙덤프 분석
java에는 out of memory 발생했을때, heap dump를 생성해주는 옵션이 존재한다.
이 dump 파일을 mat를 이용해 분석했다.
mat라는걸 처음 이용해봤는데, 그냥 당시 메모리가 어땠는지 확인할수 있다.
진짜 모든 버튼을 다 클릭했던 것 같다. 정말 운좋게 원인을 파악할 수 있던것 같다.
원인은 특정 메시지가 50초마다 수행하는데 정말 대용량의 xml을 만들고 있었음
#2 원인 파악이 불가능했던.. 느려짐 현상
시스템과 db는 뗄레야 뗄수 없는 관계이다. 시스템은 db를 통해서 데이터를 crud하면서 수행하기때문이다.
근데 알수 없는 느려짐 현상이 발생했다!! 그것도 불규칙적으로 하루에 1~2시간씩 3~4번
시스템이 하루에 1시간씩 3~4번 느려진다고 상상해봐라 ㅋㅋ 와
정말 그때는 앞이 캄캄했다. 게다가 설날쯤에 발생해서. 정말 너무 힘들었다.
내가 할수 있는 모든것을 다 분석했다.
이때 처음으로 awr이란걸 배웠다.
근데도 원인파악을 못했고, 우린 그냥 db 문제라고 생각했다.
본사에서도 모든 수석님들이 다 달라붙고 심지어 dba까지 달라붙어서 원인을 파악하고자 했다.
그러던중 dba가 db로 오는 신호가? 약하다고 했나? 뭐라고 하면서 하드웨어 교체를 권고했다.
뭐든 다 해야하는 상황이었기 때문에 무슨 하드웨어 포트? 를 교체했다.
그러더니.. 문제가 사라졌다.
솔직히 포트가 문제였는지는 아직 아무도 모른다. 그냥 그렇게 다들 생각하고 있다.
보통 시스템이 느려진 문제는 대부분 시스템 혹은 앱의 문제다. 정말 간혹 이런 문제가 있긴 한가보다.. 라고 넘어갔지만,
나는 정말 너무 힘들고, 포기하고 싶은 상황이었다.
내가 정말 아무것도 할수 없었고, 문제 원인 파악에 접근하지도 못했다. (개발 어려웡)
#3 코로나로 인한 정말 장기출장
마지막 프로젝트는 11개월정도를 중국 창사에서 머물렀다.
타국에서의 장기체류가 얼마나 힘든지 알게 된 경험이었다.
시골이였고, 뭔가 자유롭지도 못하고, 내가 점점 예민해지는 걸 느꼈다.
이때 조심해야하는게 이렇게 예민할때, 주변 사람들에게 조심해야한다.
예민한 감정이 튀어나올수 있기때문이다.
적절한 스트레스를 풀수 있는 어떤 방법을 찾아야하는데,
시골이였고, 뭔가 해소법이란게 걷는거 말곤 없었다.
그래서 매일 퇴근하고 30분에서 1시간정도 산책을 했지만,,, 그래도 힘들었던 기억이 난다.
#4 사람관계
인생에서 가장 힘든게 사람관계 아닐까? ㅎㅎ
프로젝트를 하면서 더욱이 나 같은 경우는 해외에 여러 사람들과 같이 장기체류를 하는 환경이었다.
해외라서 그런가.. 내가 했던 프로젝트엔 사람간에 관계가 그렇게 딱딱하지도 그렇게 친하지도 않았던것 같다.
퇴근하고 집에오면, 각자 방에 들어가서 그냥 밥만 같이 먹는다거나, 주로 그랬던것 같다.
그래서 솔직히 3개의 프로젝트를 하면서 사람때문에 크게 힘들었던 기억은 없다.
하지만,, 술먹고 문제 일으키는... 사람들은 간혹 있었다.. 심적으로 힘든 문제는 이해가 되긴 하는데..
그래도 타국에서는 조심하자..
프로젝트에서 힘들었던 기억들은 이렇게 정리가 끝난것 같다.
참 많은 일들을 겪었지만, 쓸 이야기도 많지만 ㅋㅋ 여기서 정리하고
만약 이런 질문을 받는다면? 어떤 답변을 할 수 있을까?
질문 : 프로젝트를 성공으로 이끌려면 어떻게 해야할까요?
너무 어려운 질문이다.
답변 :
임원 관점과 프로젝트pm 관점과 개발자 관점이 모두 다 다를것이다.
임원 관점에선 프로젝트 하나만 봐선 안된다. 동시다발적으로 여러개의 프로젝트를 관리할텐데..
여러개의 프로젝트별로 적절하게 인원을 분배 해야할것 같다.
가령 하나의 프로젝트에만 프로젝트 수행가능 인원을 넣어놓으면.. 다른 프로젝트는 아마 "지옥" 그 자체일것이다.
pm입장에선 .. 괜찮은 사람을 많이 영입해야... 할것 같고,,
단순하게 개발자 입장에선. 프로젝트 수행전에.. 철저한 사전준비가 중요할 것 같다.
이 질문을 받으면, 물어봐야겠다. 누구의 관점으로 답변을 해야하냐고,
'박정수 > 회고' 카테고리의 다른 글
프로젝트 기록 (0) | 2025.03.18 |
---|---|
2021년 회고 31살의 마지막.. (0) | 2021.12.27 |
29년 인생을 되돌아보며.. (0) | 2019.09.25 |
보통 회사에서 면접에서 이런 질문을 한다고 한다
프로젝트를 하면서 가장 힘들었던 점은 무엇이에요?
어떻게 해야 프로젝트를 성공할수 있을까요?
뭐 이런 질문을 한다고 하는데.. 이 질문에 답할수 있게 나의 경험을 정리 하고자 한다.
우선 내 소개를 하자면, 나는 에임시스템에서 3개의 프로젝트를 경험했다.
모두 중국에서 프로젝트를 했고,
첫번째는 상해
두번째는 상해 워런티 플젝
세번째는 중국 창사 플젝이었다.
프로젝트에서의 나의 역할은
Frotend
- 멘티스로 올라온 고객의 요구사항을 분석
- winform 위에서 C# 으로 구현
backend
- 회사 자체 엔진위에서 java를 이용해서 백엔드를 구현
- 사용할 쿼리를 미리 개발하고 (사용할 쿼리 자체가 db에 이미 저장시켜놓는다.)
- 테이블 설계
(테이블 설계라는게 사실 해당 분야의 도메인을 잘 이해한다면, 어렵진 않다. 이해를 못하면, 어렵다. 그래서 어렵다 ㅋ)
기타
- 멘티스를 관리 ( 관리라는게, 사용자 할당하고, 프로젝트 만들고, 멘티스 규칙 세우는 정도?)
- svn을 관리 (마찬가지로 사용자 할당)
- 스트레스 테스트 ( 보통 처음에 스트레스 테스트를 하는데, 조금 도와주는 정도? )
- 야간 대응.. (MES 개발자의 숙명.. 이건 정말 최악으로 힘들다 새벽 3시에 일어나서 갑자기 개발한다고 생각해봐라..)
troble shooting
- 시스템에 이상이 있었을때 문제를 해결 -> (요것이 말이 쉽지만 ㅋㅋ 어렵다.)
# 문제라는것을 정의하고 문제를 찾기 위해 별의 별 짓을 다한다
# ap log, db history , oracle awr 분석, gc log 분석, 소스 분석 등등...
데이터 보정
- prd data 보정
(데이터가 잘못 들어갔거나 문제가 생겼을때 보정을 해주는데 정말 이게 세상에서 제일 힘들고 어렵고 무섭다)
뭐 이런 일들을 했던것 같다. 거창하게 막 썼지만, 하나씩 보면 어려운 내용들은 아니다.
프로젝트를 하면서 직면한 가장 어려운 문제들
#1 dsp 서버 oom
- dsp 서버에서 outofMemory 가 발생한다고 한다.
- 나도 당시에 잘 몰랐기 때문에 할수 있는 모든 방법을 동원해서 해결하려고 노력했다.
노력한 방법 1
java 의 최소 메모리 최대메모리 증가 1gb 2gb -> 2gb 4gb 로 증가시킨뒤 지켜보기 -> 또 발생함
노력한 방법 2
gc log 옵션 변경 및 log data 분석
당시에 gc로그란것을 알게되서 분석해보았다 ㅎ 하지만 문제해결에는 큰 도움을 주지 못했다
왜냐면 gc log 자체는 gc 가 발생한 시간에 대해서 기록한건데, 이건 말그대로 out of memory의 원인 파악이 아니라
원인에 해당하는 결과만 알수 있었다. ( 메모리 사용양이 많아!! 그니까 gc가 계속 발생해!! 이 사실만 알수 있었다. )
그래서 다음번엔 아마 gc는 가장 늦게 건드릴것 같다
혹시라도 분석방법이 궁금하시면
gceasy.io
How to enable Java GC Logging? For Java 1.4, 5, 6, 7, 8 pass this JVM argument to your application: -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc: For Java 9, pass the JVM argument: -Xlog:gc*:file= file-path: is the location where GC log file will be
gceasy.io
이 사이트에서 분석하면 된다 그냥 gc log를 업로드하면 분석해준다.
노력한 방법 3
out of memory 발생시 힙덤프 분석
java에는 out of memory 발생했을때, heap dump를 생성해주는 옵션이 존재한다.
이 dump 파일을 mat를 이용해 분석했다.
mat라는걸 처음 이용해봤는데, 그냥 당시 메모리가 어땠는지 확인할수 있다.
진짜 모든 버튼을 다 클릭했던 것 같다. 정말 운좋게 원인을 파악할 수 있던것 같다.
원인은 특정 메시지가 50초마다 수행하는데 정말 대용량의 xml을 만들고 있었음
#2 원인 파악이 불가능했던.. 느려짐 현상
시스템과 db는 뗄레야 뗄수 없는 관계이다. 시스템은 db를 통해서 데이터를 crud하면서 수행하기때문이다.
근데 알수 없는 느려짐 현상이 발생했다!! 그것도 불규칙적으로 하루에 1~2시간씩 3~4번
시스템이 하루에 1시간씩 3~4번 느려진다고 상상해봐라 ㅋㅋ 와
정말 그때는 앞이 캄캄했다. 게다가 설날쯤에 발생해서. 정말 너무 힘들었다.
내가 할수 있는 모든것을 다 분석했다.
이때 처음으로 awr이란걸 배웠다.
근데도 원인파악을 못했고, 우린 그냥 db 문제라고 생각했다.
본사에서도 모든 수석님들이 다 달라붙고 심지어 dba까지 달라붙어서 원인을 파악하고자 했다.
그러던중 dba가 db로 오는 신호가? 약하다고 했나? 뭐라고 하면서 하드웨어 교체를 권고했다.
뭐든 다 해야하는 상황이었기 때문에 무슨 하드웨어 포트? 를 교체했다.
그러더니.. 문제가 사라졌다.
솔직히 포트가 문제였는지는 아직 아무도 모른다. 그냥 그렇게 다들 생각하고 있다.
보통 시스템이 느려진 문제는 대부분 시스템 혹은 앱의 문제다. 정말 간혹 이런 문제가 있긴 한가보다.. 라고 넘어갔지만,
나는 정말 너무 힘들고, 포기하고 싶은 상황이었다.
내가 정말 아무것도 할수 없었고, 문제 원인 파악에 접근하지도 못했다. (개발 어려웡)
#3 코로나로 인한 정말 장기출장
마지막 프로젝트는 11개월정도를 중국 창사에서 머물렀다.
타국에서의 장기체류가 얼마나 힘든지 알게 된 경험이었다.
시골이였고, 뭔가 자유롭지도 못하고, 내가 점점 예민해지는 걸 느꼈다.
이때 조심해야하는게 이렇게 예민할때, 주변 사람들에게 조심해야한다.
예민한 감정이 튀어나올수 있기때문이다.
적절한 스트레스를 풀수 있는 어떤 방법을 찾아야하는데,
시골이였고, 뭔가 해소법이란게 걷는거 말곤 없었다.
그래서 매일 퇴근하고 30분에서 1시간정도 산책을 했지만,,, 그래도 힘들었던 기억이 난다.
#4 사람관계
인생에서 가장 힘든게 사람관계 아닐까? ㅎㅎ
프로젝트를 하면서 더욱이 나 같은 경우는 해외에 여러 사람들과 같이 장기체류를 하는 환경이었다.
해외라서 그런가.. 내가 했던 프로젝트엔 사람간에 관계가 그렇게 딱딱하지도 그렇게 친하지도 않았던것 같다.
퇴근하고 집에오면, 각자 방에 들어가서 그냥 밥만 같이 먹는다거나, 주로 그랬던것 같다.
그래서 솔직히 3개의 프로젝트를 하면서 사람때문에 크게 힘들었던 기억은 없다.
하지만,, 술먹고 문제 일으키는... 사람들은 간혹 있었다.. 심적으로 힘든 문제는 이해가 되긴 하는데..
그래도 타국에서는 조심하자..
프로젝트에서 힘들었던 기억들은 이렇게 정리가 끝난것 같다.
참 많은 일들을 겪었지만, 쓸 이야기도 많지만 ㅋㅋ 여기서 정리하고
만약 이런 질문을 받는다면? 어떤 답변을 할 수 있을까?
질문 : 프로젝트를 성공으로 이끌려면 어떻게 해야할까요?
너무 어려운 질문이다.
답변 :
임원 관점과 프로젝트pm 관점과 개발자 관점이 모두 다 다를것이다.
임원 관점에선 프로젝트 하나만 봐선 안된다. 동시다발적으로 여러개의 프로젝트를 관리할텐데..
여러개의 프로젝트별로 적절하게 인원을 분배 해야할것 같다.
가령 하나의 프로젝트에만 프로젝트 수행가능 인원을 넣어놓으면.. 다른 프로젝트는 아마 "지옥" 그 자체일것이다.
pm입장에선 .. 괜찮은 사람을 많이 영입해야... 할것 같고,,
단순하게 개발자 입장에선. 프로젝트 수행전에.. 철저한 사전준비가 중요할 것 같다.
이 질문을 받으면, 물어봐야겠다. 누구의 관점으로 답변을 해야하냐고,
'박정수 > 회고' 카테고리의 다른 글
프로젝트 기록 (0) | 2025.03.18 |
---|---|
2021년 회고 31살의 마지막.. (0) | 2021.12.27 |
29년 인생을 되돌아보며.. (0) | 2019.09.25 |