Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

Super Coding Addict

호스팅을 마치며 본문

Today I learned

호스팅을 마치며

밍응애 2021. 1. 4. 07:15

드디어 호스팅까지 마무리가 되어서 팀프로젝트를 끝맺음하였다.

 

개발만 끝내면 끝인 줄 알았는데, 그건 또 다른 시작이었던거야...ㅋㅋ

localhost에서만 서버를 돌리다가 다른 환경으로 서버를 돌리기 시작하니 같은 톰캣이어도

그전에 알던 네가 아냐.........

 

https로 마이그레이션을 다 끝내서 이제 되겠지 하고 봤더니 gps는 잘 잡히는데

gps기반으로 근처스팟들을 검색해 잡아주질 못하는 불상사가 발생했다....

검색기능을 하는 함수를 불러오면 분명 자바스크립트상에서 함수는 불러와지는데

백단이 뭐가 문제인건지 ajax 비동기통신이 안되어서 500번 오류가 발생했다.

 

지도기능을 담당한 팀원과 함께 하루종일 디버깅작업을 했다.

팀원이 없었다면 난 정말 호스팅만 일주일을 넘게 했을지도 모른다...

내 구현 부분이 아니다보니 더욱이 디버깅 작업이 쉽지 않았던 것 같다.

 

중심을 잡아주는 함수를 다른 함수 안으로 넣어보기도 하고,

ajax통신을 할 때 data를 넘겨주는 부분을 "변수명="+변수값으로 했던 것을

{"변수명" : 변수값}과 같이 map형식으로 바꿔서 통신해보기도 하고,

넘기는 경도, 위도 값을 백단에서 다시 parseDouble로 바꿔주기도 하면서 별 방법을 다 시도해보았다.

 

대체 백단에서 무슨 일이 일어나는 지 알 수가 없으니 너무 답답했다.

로컬이었다면 개발툴에서 콘솔창에 값이 넘어오는 지부터해서 백단에서 일어나는 오류를 자세하게 볼 수 있지만

이렇게 외부 서버에 올리고나면 백단에서 일어나는 일은 알 수가 없다 ㅠ.ㅠ

리눅스 로그를 찍어본다고는 하는데 아직 나는 초짜 개발자이기에...

 

팀원이 좋은 솔루션을 하나 가져왔다.

자바스크립트는 직접 콘솔창에 로그를 찍어볼 수 있는데 (f12 사랑해)

ajax통신시 대체 뭐가 문제인건지 error 내용을 자세히 찍어줄 수 있는 방법이 있다는 것이다.

 

ajax통신하는 코드에서

data : ~~~~~~~,

dataType: json, 이런 코드 밑에

 

error: function(error){ console.log(JSON.stringify(error));},

 

요 아이를 넣어주면 콘솔창에 에러내용을 상세히 보여준다.

아주 기나긴 글을 보여주는데 눈을 크~게 뜨고 찾아보면 무슨 오류인지 힌트를 던져준다.

보다보니 이런 문장이 눈에 들어왔다.

java.lang.OutOfMemoryError: GC overhead limit exceeded

아... 메모리가 초과된다고?

 

백단에 정보가 넘어가서 정보검색을 하게 되는데 그 부분이 너무 커서 메모리 초과가 되는 것 같았다.

호엥...? 가비지컬렉터가 처리할 수 있는 용량을 초과한다는 건가...?

근데 분명 자바에서 이상했다면 로컬서버에서도 같은 문제가 발생해야 하는 게 아닌가!

 

구글링을 몇번 더 하자 역시 톰캣서버가 문제였다.

(참조 : Toward the Developer :: 톰캣 메모리 설정 (tistory.com) )

로컬서버에서 돌렸던 톰캣 메모리설정과 카페24에서 돌리는 톰캣 메모리설정이 다른 거라 짐작됐다.

파일질라로 들어가서 카페24 톰캣설정을 바꿔주었다.

tomcat - bin에 들어가면 catalina.sh파일이 있는데 이것을 직접 편집하려면 로컬로 복사해와서

메모장으로 연 후 작업을 하면 된다.

 

맨 윗줄에 보면

#!/bin/sh가 있는데 그 바로 밑줄에

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC"

이렇게 코드를 넣어주면 메모리 max를 늘릴 수 있다!

 

그렇게 하고 파일을 다시 넣어준 후에 톰캣을 재구동시켰더니 드디어 마커들을 지도에 찍어주는 게 아닌가

ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

주니어개발자이지만 개발을 계속 할 수밖에 없는 이유 중 하나는 바로 이런 게 아닐까...

나를 미친듯이 괴롭히고 말도 안통하는 것 같은데 어느 순간 헤헷 짜잔! 하고 정상작동을 할 때

입꼬리 씰룩씰룩하면서 괴성을 지르는 행복한 순간이 있기 때문이다 ㅋㅋㅋ

 

마커가 찍히니 하나하나 자세히보기 버튼을 눌러 리뷰창을 띄울 수 있게 되었다.

그런데 별점의 별이 또 안보여...? 

왜인지는 모르겠으나 별점을 웹에서 가져온 경로로 이미지 설정을 해놓았더니 그 이미지 로딩을 못한다.

이미지를 통째로 저장해서 img폴더에 넣고 css에서 경로설정을 다시 폴더로 잡아주었더니 로딩이 잘 되었다.

 

정말 호스팅까지 마무리가 되었다.

작년 여름부터 개발을 배우기 시작해서 아직 6개월도 채 되지 않았고,

팀플도 학원에서 한 게 아니라 수강생들끼리 조를 짜서 자체적으로 진행한 것이었기에

문제가 생겼을 때 자체적으로 해결할 수 밖에 없었지만 정말 집단지성은 위대하다..ㅎㅎ

교육이 끝나고도 매주 비대면으로 회의를 하면서 팀플이 공중분해 되지 않고 유지된 게 참 감사할 뿐이다.

 

개발을 하면서 짜증도 많이 났지만 밥을 먹으면서, 산책을 하면서도 머릿 속에 디버깅을 하기 위한

논리회로(?)를 나혼자 짜보고 신나게 코드를 쳐서 돌려보고 그게 맞는지 확인하는 작업을 거치는게

정말 신기하게도 재밌었기에 개발자로서 꿈을 버릴 수 없게 되었다.

수학문제를 주머니에 넣어가지고 다니면서 시간이 나면 풀어봤다는 우리 수학쌤이 이런 기분이셨을까..

ㅋㅋㅋㅋㅋ

 

보여지는 결과물이 아~주 멋지고 훌륭한 작품은 아니지만

어화둥둥 내새끼라고 여기저기 링크를 뿌리면서 지인들에게 자랑을 했다. 

 

이렇게 개발자로서 첫 프로젝트 마침표를 찍는다 :)

이제 취업하자~~~~~~~