예전부터 그랬다. 하기싫은걸 억지로 하면 참고 해내기보단 늘어지다가 라이프사이클 자체가 망가지는 경험...
인프라공방 1-2주차
인프라공방이 이제 2-2단계 미션을 진행하는 상황이다.
1.
1-1단계 망구성하기
: 나는 지금까지 그냥 EC2만 적당히 만들어서 쓰거나 대략 2년반동안 모든 프로젝트가 고객사 인프라팀이 다 맡아서하거나 내가 하더라도 그냥 서버에 ssh로 접근해서 git pull 한 다음 배포하는 방식이라 서버를 주문하고 그냥 서버에 배포할 프로그램과 필요한 의존성 프로그램을 설치한 적은 있어도, aws에서 vpc부터 직접 만들어본 경험은 처음이였다.
VPC를 생성하면서 IP에 클래스가 있다는 사실을 처음 알았고, 서브네팅(subnetting)이라는 개념도 처음알았다. 부끄러울정도로 네트워크에 대한 이해도는 낮은편이였는데, 애써 외면하면서 개발을 해왔고 그 실체가 드러나면서 고생을 하고있는 것 같다. 외부망 서브넷 2개, 내부망 1개, 관리용 내부망 1개 이렇게 네개의 서브넷을 만들고 Internet Gateway를 만들고 Route Table도 만들고 보안그룹 설정까지 해보았다.
익숙한 것들도 있고, 낯선 부분들도 상당부분 존재했다.
ICMP 보안그룹 설정을 해줘야 Ping 테스트가 가능한것도 처음알았다.
그리고, 예전 아모레와 일을 할 때 Bastion 서버라는개념을 접하긴 했지만, 뭔지 잘 몰라 헤맸었는데 이번기회에 직접 Bastion 서버를 만들어보면서 어떤 목적이고 어떻게 사용하는지 익힐 수 있는 기회였다.
2.
2-2단계 배포하기
이번 미션에서 나는 도커를 처음 설치하며 사용해봤자. 이쯤에서 나는 생각했다.
아 너무 섣부르게 과정을 시작했구나.
미션 하단에 힌트가 잘 작성되있어서 힌트만 공부하고 따라하기만해도 미션을 진행하는데 어려움이 없지는 않지만 그래도 진행은 가능하다. 하지만, 그때그때 구글링하며 짤막하게 공부하는걸로는 온전히 내것이 되는게 아니기에 미션을 진행하면서 지금까지 다른 과정과는 다르게 아 이해했다! 하고 넘어가는게 아니라 마음고생이 시작되었다.
Reverse Proxy
WAS에서 TLS같은것을 신경쓰지않게끔 하자는 취지하에 분담된 역할을 담당해줄 것으로 이 Reverse Proxy가 사용된다. 기존의 프록시가 LAN → WAN 요청을 대리수행해주는 반면 Reverse Proxy는 WAN→ LAN의 요청을 대리수행해준다. 그래서 클라이언트에서 요청이 전달될 때 중간에서 끼어들어서 전/후처리를 대신 해주는 것이다.
그 덕에 서버내에 있는 프로젝트의 포트는 8443으로 되어있고 SSL 인증서도 따로 가지고있지 않지만, 이런 모든 절차를 Reverse Proxy에 역할을 분담해서 동작이 제대로 되게 되었다.
그리고 데이터베이스도 형상관리가 가능하고 이를 도와주는 프레임워크가 있다는것을 알게되었고 그 중 하나가 flyway라는 것이였는데, 사실 아직 전혀 이해를 못한상태라서 추가적인 공부가 필요하다...
3.
2-1단계 인프라 운영하기
로깅 및 모니터링에 대해 본격적으로 해보는 과정이였다.
나는 로그 기능을 그냥 롬복(Lombok)의 어노테이션을 이용해서 DI받아 사용하는편이였고 파일로 넘겨야 하는 경우는 몇 번 없었는데 요구사항에 따라서 그냥 직접 File I/O 를 만들어서 직접 구현해 사용했다.
그런데 간단한 xml 설정으로 logback 설정을 하고 편하게 사용할 수 있다는 사실을 알게 되었고, 이번에 새로 들어갈 프로젝트에서는 이 기능을 사용해야겠다고 생각했다.
단순히 콘솔 로그뿐아니라 JSON타입도 가능하다고하니 사용하기에따라 유용할 것 같다.
그리고 Nginx Log 설정은 처음에는 굳이 필요하나? 생각을 했고, 이전 과정에서 reverse-proxy를 띄운걸 굳이 제거하고 다시 하기도 귀찮아서 안했더니 차후 생길 문제에서 어려움을 겪었다.
이 단계에서 모니터링 도구로 aws에서 제공되는 cloudwatch를 사용하기전에 cAdvisor를 사용해보았는데, 이 역시 docker의 컨테이너였고 여기서 정말 많은 시간을 보냈다.
해당 컨테이너의 publish port는 8080이였는데 내가 선언한 reverse-proxy에서는 8080포트에 대한 대응코드는 없었고, 그래서 8080포트에 대응하는 코드들을 넣고 동작을했더니 동작을 안하는 것이였다.
그래서 location을 바꿔가면서 지정해주다보니 정적자원 접근이 제대로 안되면서 계속 문제가 생겼다.
거의 3일을 이 문제로 다시 리뷰요청을 못했는데, 나중에 알고보니 내가 보안그룹에서 8080포트를 개방을 하지 않아서 생긴 문제였다 ㅡㅡ
그래도 지금은 해결을 했고, 다음 링크로 직접 확인도 가능하다.
그리고 cloudwatch도 적용을 하긴했는데...........아.....뭔가 그냥 따라치고 됐어요! 한 기분이라... 많은 공부가 필요할 것 같다...
네트워크, 회피
최근까지 자바, 자바스크립트, 스프링, 디비 등 많은 공부를 할 때 나는 나름 재미도 많이 느끼면서 연차를 써도 집에서 포스팅을하면서 학습을 진행했다. 그덕에 블로그에는 글이 많이 쌓여갔고 블로그 방문자수도 높아지면서 이를 원동력으로 더 열심히 할 수 있었다.
그런데 네트워크를 시작하고 난 뒤 거의 모든게 멈춘 상태다.
네트워크 입문책을 보는 초반까지는 괜찮았다. 조금 싫기는했어도 알아들을 수 있고 이해할 수 있으니..
그런데 인프라공방 과정을 진행하면서 나오는 여러 네트워크에 관련된 키워드들은 해당 키워드만 구글링해서 알 수 있는게아니라 이 키워드자체도 여러 기반지식을 알고 있어야 알 수 있기 때문이다.
예를들어 서브네팅을 이해하기위해서는 서브넷과 서브넷 마스크를 알고 있어야하고, 여기에는 또 IP와 IP Class라는 기반지식이 필요하다. 도커는 말할것도 없고 nginx 조차 그렇다.
webRTC프로젝트를 진행하며 TCP/ UDP에 대한 기본적인 개념과 API 서버를 스프링으로 구현하기위해 필요한 정도의 http 지식정도 그리고 기초적인 OSI 7계층 및 TCP/IP 프로토콜 스택에 대한 지식만 알고있는 나에게 지금 이상황은 마치 수학으로치면 덧셈 뺄셈만 공부한 상태에서 바로 미분/적분을 공부하고 퓨리에변환과 칼만필터에 대해 공부하는 느낌이다.
학생때도 그렇지만 나는 뭔가 감당이 힘들거나 어려운 상황이 오면 이를 돌파하기보다는 회피하는 성향이 크다.
그러다보니 퇴근해서도 이전에는 컴퓨터부터 키고 밥먹으면서 인강이나 책부터 보던것과는 다르게 지금은 밥먹고 청소하고 설거지하고 컴퓨터 전원만키고는 다시 소파로가서 볼 것도 없는 유튜브나 새로고침을 한다.
그렇게 버티고 버티다 10시나 11시쯤 억지로 책상에 앉아서 미션진행을 하는 시늉만 하면서 겨우겨우 1~2시간 학습을 마치고는 바로 컴퓨터를 끄고 침대로 향한다.
그러다보니 딱 미션진행에 필요한 내용만 공부를 겉만 공부하고 사용법만 익히는수준이고 거기에 사용된 기반지식들에 대한 학습을 따로 못하고 있다. 아니 안하고 있다.
그러다보니 현재 미션을 2주넘게 진행했지만 지식들은 대부분 부평초와같이 둥둥 떠있는 상태로 휘발성도 강하다.
그럼 어떻게 해결을해야할까? 그냥 노오오오오력을 해야하는건가?
다행히도 지금 이렇게 억지로라도 회고록을 작성하고 이런 현 상황을 토로하면서 회피만 하는 내 자신을 어느정도는 객관화를 하게 되었다.
다행히 미션이 끝난다하더라도 세미나 영상들은 남아있고, 키워드들은 알고 있으니 마인드맵을 작성하듯 기반지식부터 공부를 진행해야 한다.
남해 출장
올초부터 진행이 계속되던 남해 비대면돌봄 프로젝트가 마무리되는 시점에서 남해쪽 CCTV 통합관제센터에 서버를 설치해야해서 직원 한 분과 이사님과 협업사 사장님 한 분과 남해로 출장을 다녀왔다.
이번에는 1박도 아닌 당일치기였기에 각오를 하긴했지만, 정말 힘든 여정이였다. 나는 운전을 한 것도 아닌데...
어쩌다보니 내가 참석할 필요는 없지만 프로젝트 과업 진행상황 보고회의에 참석하게되면서 남해 통합관제팀(이하 통플)과 의견조율이 아직 다 안되었다는 사실을 알 수 있었고, 우리측 개발사가 우리만있는게 아니라 VMS(전광판), 거리 관측 등 우리를 제외하고 3개 회사가 더 참석을 한 상태였다.
의견조율을 하다보니 회의가 예상보다 길어져서 약 3시간이 넘게 진행되었고, 회의가 끝나니 오후 5시반이 넘은시점이였다. 다들 지쳐서 그런지 통플팀에서도 서버를 설치하기보단 일단 그냥 놓고가라고해서 서버실에 비치만 하고 나오면서 문득 이런 생각이 들었다. '나는 이럴꺼면 왜 온거지?
서버설치때문에 온건데 서버설치를 안하면 사실 올 이유가 없었다. 왕복 10시간이라는 고된 여정을 애초에 할 필요도 없었는데..........
회의가 끝나고 복귀를 하는 상황에서 처음에는 그냥 빨리가고싶으니까 휴게소에서 대충 라면이나 먹으려 했지만, 협업사 사장님이 온김에 회라도 먹고 가자고해서 횟집으로 방향을 틀어서 저녁 식사를 함께 하게 되었다.
처음엔 크게 내키지않는 직상 상사와의 식사자리였지만, 하다보니 이사님과 사장님도 성격이 온화하신편이고 개발얘기도 많이 해주셔서 나쁘지 않은 자리였다.
그리고 무엇보다 횟집에서 나와 본 경관들이 몹시 뛰어나서 그래도 남해까지 온 보람은 어느정도 있다는 생각을 하게 되었다.