반응형

 

SW 형상관리

 

  형상관리란, SW의 형상을 관리하는 것이다. 구체적으로 말하자면 음.. 일단 소프트웨어라는건 서비스가 출시를 한다고해서 거기서 끝나는게 아니고, 어떤 오류가 났다, 아님 어떤 기능을 추가한다, 아님 어떤 기능을 없앤다 등.. 유독 변화가 심한 제품이라고 할 수 있다.

 

  특히 대규모 프로젝트인 경우는 개발자들이 수십, 백 단위로 개발이 되었을텐데 내가 이부분 수정하고, 저사람이 이부분 수정하고 그렇게 하다보면 개판이 되어버릴꺼고 통합하는데 어려움일 있을 것이다.

 

  그래서 나온 것이 그 소프트웨어의 형상을 관리해주는 툴이다..! 같은 말만 반복하고 있는거 같은데, 예시를 들어 알아보자. ㅎㅎ 형상관리툴은 중앙에 우리 프로젝트의 메인 소스들이 있고, 사람들이 그 메인 파일을 각자 컴퓨터에서 지지고 복고, 수정을 한다음에 자신의 부분만, 중앙에 있는 메인소스에 반영을 시키는 것이다. 아까 말했던것처럼 다른 사람과 중복으로 수정한 부분이 있으면 이것또한 Conflict가 발생했다고 알려주고, 가장 편리한 점은 언제 어떤 소스를 누가 Commit 했는지까지 추적이 되는 것이다.

 

  뭔가 서비스를 운영하다가 갑자기 안된다.. 그럼 가장 최근에 Commit했던 코드부터 의심한다. 왜냐..? 그전까진 잘됐으니까! 그 코드중에 어떤부분이 바꼈는지 또 어느상태로 Rollback 해야하는지까지 할 수 있는 것이다.

 

형상관리 툴의 종류

SVN vs GIT

 

1. SVN

 

 

  이친구는 SubVersion의 약자로 중앙방식의 형상관리 툴이다. GIT도 나중에 설명하겠지만, 이친구는 중앙에 하나의 메인 저장소만 두고, 각 콤퓨타들이 그 메인 중앙서버에 소스를 반영하는 방식이다. 머야..? 당연한거자나!? 라고 생각하겠지만, 맞다. 아주 당연하게 만든 프로그램이라 2004년도에 개발됐다...상당히 오래된 방식.. 하지만 아주 직관적이고 편리해서 지금까지도 널리 쓰이고 있다.

 

2. GIT

 

 

  자 GIT이다.. 요즘 컴퓨타를 배우는 사람들은 많이 들어봤을 것이다. 왠만한 오픈소스들은 GIT으로 많이 공유가 되니까말이다.. 이름이 GIT인 이유는 제작자가 만들다보니 그냥 이렇게 됐다고.. 이거 출시일도 SVN이랑 비슷하다. 아주 오래 됐는데 SVN과의 관계를 보면. 제작자가 SVN쓰다가 더이상 이거 못 써먹겠다 하고 개빡쳐서 만든게 바로 GIT이라고 한다. 소문에 의하면 2주만에 만들었다고..

 

  암튼 기업형 소프트웨어 개발이 아닌 우리같이 주식개미마냥 취미로 개발하는 사람들한테 인기가 더 많은 이 GIT은 GITHUB라는 소스 공유 사이트까지 운영하고 있다. 왠만한 라이브러리나 누군가 개발해놓은 소스들을 여기가면 다있으니 그야말로 오픈 소프트웨어의 성지라고 할 수 있다.

 

 

  GIT이 SVN과 다른점은 머 많은 기능들도 있지만, 가장큰 차이점은 동작 방식이 조금 다르다. SVN은 중앙서버에 직접 소스를 반영하는 방식이라면, GIT은 내 로컬서버에 해당 저장소가 있어서 각 개발자들이 본인이 개발한걸 본인들 로컬 저장소에 Commit한다. 그리고 최종적으로 로컬에 있는 소스들을 중앙 메인서버에 Push하는 방식이다.

 

차이점을 한 눈에 이해했나..!? 바로 로컬서버가 존재한다는 것.! 이제 구성 방법에대해서 알아보자!

1. GIT 설치

 

https://gitforwindows.org/

 

Git for Windows

Git for Windows focuses on offering a lightweight, native set of tools that bring the full feature set of the Git SCM to Windows while providing appropriate user interfaces for experienced Git users and novices alike. Git BASH Git for Windows provides a BA

gitforwindows.org

자 들어가보자 ㄱㄱ

 

 

  별거 없다. 좋은 사이트란 어려우면 안된다. 저렇게 큼지막하게 직관적으로 버튼이 있어야하는데 아주 좋다. 다운버튼을 눌러보자.

 

 

  뚜둔..! 다운 받았당 히히....실행해서 설치하장.

 

 

 

 

 

 

 

 

  진짜 별거 없다. 뭐... 선택할 수 있는 버튼도 많고.. 알겠는데... 미안한데..뭔지 모르겠다.. 일단 최선의 선택을 디폴트로 뒀을거라고 GIT 개발자들을 믿으며 긍정적인 버튼들만 눌러서 설치를 완료해보자!

2. GIT 디렉토리 생성

 

 

 

  자. 자기 GIT 소스들을 저장할 폴더를 원하는 위치에 만들고 그 빈 폴더를 오른쪽마우스를 눌러 Git Bash Here 버튼을 눌러주자.

 

 

 

  Bash 쉘이 실행되면서 간지나는 화면이 나온다. 거기다가 git init 을 입력하고 엔터를 눌러주자.

git init

 

  를 입력해보자! 그럼 저 위치를 저장소로 초기화했다는 문구가 나온다.

 

 

  우리가 지정했던 폴더에 .git 이라는 폴더가 생겼다 히히..만약 안보이는 사람이 있으면 폴더 옵션에 숨김파일 표시를 체크해주자!

 

  짜잔..! 로컬 GIT 저장소를 만들어따..!! 짝짝짞

 

 

#GIT #설치 #로컬 #저장소 #만들기 #형상관리 #툴 #SVN #차이점

 

 

 

 

 

반응형
반응형

https://extsdd.tistory.com/78

 

[아마존 AWS EC2] #1 EC2 서버 접속하기 / PUTTY 다운 및 설치 / PEM→PPK 변환 / Server refused our key

https://extsdd.tistory.com/77 [아마존 AWS 무료 EC2 서버 생성하기] #3 EC2 인스턴스 생성 / 구축 / 방화벽이란? / 탄력적 IP https://extsdd.tistory.com/76 [아마존 AWS 무료 EC2 서버 생성하기] #2 IAM 계정..

extsdd.tistory.com

  저번 시간까지 PUTTY를 이용해서 원격 서버에 접속하는 법에 대해서 배웠다. 이제 본격적으로 웹 서비스를 만들어 볼껀데 그전에 우리 비전공자분들도 이해를 하고 출발해야 나중에 포기를 안하니, 웹 서비스가 무엇인지 알아보자.

 

  자 일단 학부생 수준부터 이야기 해보면 과거에 프로젝트 하면서 APM서버라는 말을 많이 들어봤을 것이다. 혹은 AMP서버라고도 부르기도 하던데 바로 Apache + PHP + MYSQL 조합으로 연동하여 웹 서비스를 수행하는 것이다. 대략적인 큰 그림은 이것과 비슷하다.

 

웹 서비스 = ①Server  + ②Spring (Project) + ③Database (DBMS)

  자 가장 중요하다고 생각하는 3개 요소를 내 뇌피셜로 한번 써봤다. 자 어떤거부터 알아봐야 할까? Server가 먼지부터 알아보자! 그전에 내가 포스팅 하는 목적은 비전공자들도 이해할 수 있도록 눈높이에 맞는 비유나 표현을 사용할 예정이니 전문 개발자들 분께선 뭐 글이 이따위야! 하시지 마시고 이해해주셨으면 한다.

 

1. Server = Apach Tomcat Server

 

  비전공자도 이해하려면 이걸 어떻게 설명해야할까 고민이 많다. 서버라...음.. 그냥 눈에 보이진 않지만.. 뭔가를 처리해주는.. 로봇같은...역할? 이정도 수준으로 일반인들은 느끼고 잇을 것이다. 

 

  먼저 서버는 WEB 서버가 있고 WAS 서버가 있다. 앗. 비전공자들 이해할 수 있을정도로 쉽게 알려준다 해놓고 시작부터 어려운 것부터 꺼내냐고 할 수 있겠지만.. 나도 고민하다가 이 말부터 꺼내야 뒷 내용 전개가 가능 할 것같다.

 

2. WEB서버  (Web Server)

  자 히스토리부터 살펴보자. 예전엔 WEB 서버라는 것이 주로 쓰였다. 한글 발음 그대로 웹 서버! 들어는 봤을 것이다.  이친구는 정적인 자료의 처리를 해준다. css (화면 레이아웃 설정파일정도), html (웹페이지 화면), 이미지(화면에 띄어지는) 등등 내용이 변하지 않는 파일들의 요청을 들어준다.

  예를들어 우리가 extsdd.tistory.com이라는 웹 주소를 요청하면 서버는 그 요청에 해당하는 화면을 html 파일로 뿌려준다. html과 동시에 위에나온 화면 레이아웃을 설정해주는 css파일 그리고 화면에 띄어줄 이미지들 이것들은 내용이 변하지 않고 정적인 파일이기 때문에 이 WEB서버란 친구가 착실하게 뿌려주는 것이다.

  사용자 입장에선 이 서버로부터 받아낸 html, css, 이미지 등을 조합해 내 화면에 구성해서 띄어주는거다. 이 방법은 정적이기 때문에 그 사이트의 모든 화면들은 모두 html 파일로 서버에 저장해놓고 그걸 그대로 뿌려주는 것이다. 예를들면 로그인 화면, 첫 번째 글을 눌렀을 때 화면, 두 번째 글을 눌렀을 때 화면 등. 그 사이트에서 존재하는 모든 화면이란 화면은 모두 서버에 html 패거리(css, 이미지 등)를 다 저장해 놨던것이다.

 

  이렇게 모든 화면에 대해서 서버가 다 가지고 있다보니 화면을 조금 수정하려고하면 HTML을 전부 수정하거나, 모든 HTML 리소스들을 다 가지고 있다보니 서버 자원들도 커지고, 한 화면마다 다 하나하나 요청을 처리하다보니 부하도 있고 문제가 많았다. 그래서 등장한게 바로 Dynamic Web이다. 동적 웹!!

 

3. WAS서버 (Web Application Server)

  기존 Web server의 한계는 위에 적어놨고, WAS는 한층더 발전된 개념이다. 바로 Dynamic 해졌다..! 한국말로는 동적으로 변했다..! 이게뭐냐면 Servlet Container라는 개념이 추가됐다. 이게 머냐면은 사용자가 웹 페이지 요청을 보내면 이 Servlet Container 라는 친구가 요청을보고 아! 이요청은 이화면에 이런 정보들이 필요한 페이지구나!! 하고 이친구가 뚝딱뚝딱 정보를 만들어서 실시간으로 html파일을 만들어버린당..! 그리고 그걸 바로 사용자에게 줘버린다..ㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷ

 

  즉. 예전처럼 웹 사이트의 모든 html파일을 가지고 있지않아도, html을 어떻게 만들지 정도만 정의해 놓으면 이 WAS라는 친구가 그 요청에 필요한 html을 만들어버리는 것이다.! 구몬을 얼마나 해야 이런 아이디어가 나오지..! 이렇게 되면 모든 리소스를 미리 안가지고 있어도 되는 장점이 생기며 그만큼 부하도 적어지게 되는 것이다. 

 

  잘 생각해보면 이게 가능한 이유는 간단하다. 어떤 글을 요청하던 화면이 크게 바뀌진 않는다. 글을 누르면 제목이 있고 본문이 있고 댓글들이 있고.. 그렇다. 큰 틀은 같은데 안에 정보들만 바꿔주면 되는것이다. 그렇게 이 동적 웹서비스를 가능케 하는게 바로 우리 WAS성님 되시겠다.

 

4. WEB서버 + WAS서버

  자 그럼. WAS서버가 좋다고해서 WAS만 쓸까? 아니다. 여전히 이미지파일이나 소수의 HTML과 같은 정적인 리소스들도 아직도 처리해야하기 때문에 WEB서버도 필요하다. 그래서 아주 간단하다. 같이 쓴다. WEB서버와 WAS서버 둘다 같이 사용하는 것이다. 정적인건 WEB이 그대로 처리하고, 동적인건 WAS가 처리하고. 위와 같은 그림이 될 것이다. 우측에 DB는 아직 머리아프니 나중에 알아보도록 하자.

 

  프로세스를 보면 이런거다. 사용자한테 페이지 요청이 서버에 들어오면 처음에 WEB이 받는다. 만약 간단한거 머 이미지나 css파일 처럼 정적인거면 WEB이 바로 반응을 해준다. 헤헤..이거 필요한거지!? 이런식으로... 그런데 살짝 어려운게 왔다. 동적인 페이지 요청이 왔다하면 WEB이 어찌할줄을 몰라하면서 하.....이거 뭐징...ㅠㅠ 하면서 WAS한테 보내서 걔한테 처리하라고 해야겠다 하고! WAS에게 던진다. 근데 WAS는 똑똑하니까 그 동적 요청을 DB에서 정보들을 끌어와서 그 요청에 맞게 HTML을 작성한다. 그리고 그걸 다시 WEB한테 보내고 WEB은 아하!!!!!!!역시 WAS야! 하면서 WAS에게 받은걸 사용자한테 뿌듯해하면서 준다.

5. Apache Tomcat Server

  와우 이제 마지막 개념정리다. 방금까진 살짝 x밥 같았지만 이제야 좀 그럴싸한 내용이 나왔다. 아.파.치. 톰.캣!! 아주~~널리 쓰고 있는 서버구성의 이름이다. 아직 개념이 안잡히면 헷갈릴 수도 있다. 아니 아파치 서버도 있고 톰캣 서버도 있고 아파치 톰캣 서버도 있고! 대체뭐야! 같은건가? 라고도 생각 할 수 있는데 살짝 다르다.

 

가. Apache Server = WEB Server

  아파치 서버라고 하면 위에 계속 설명했던 WEB 역할을 하는 서버의 이름이다.

 

나. Tomcat Server = WAS Server

  톰캣 서버는 WAS서버의 역할을 하는 서버의 이름이다.

 

다. Apache Tomcat Server = WEB Server + WAS server

  아파치 톰캣 서버는 WEB서버와 WAS서버 두개다 동작하는 서버구성이다. 위와 같다고 생각하면 되겠다. 이렇게 구성해놓고 어떤 요청이왔을때 정적인 리소스를 요청하면 Apache가 처리하고 동적인 요청이 오면 Tomcat에게 넘겨 처리하도록 하는 것이다!

6. WAS의 처리 프로세스

  와우 이제 좀..어려워 졌다.. 하지만 WAS를 좀 구체적으로 그린것 밖에 없고 나머지는 다 똑같다. WAS에 대해 더 알아보자면 컨테이너란 녀석이 WAS가 돌아가는 동안은 24시간동안 당직을 서고 있는다. 이 컨테이너라는 친구가 WEB에서 못해먹겠다고 동적 요청을 받으면 그 요청에대한 정보로 httpServletRequest 객체(정보 뭉텅이라고 생각하면 됨)와 httpServletResponse라는 빈 객체를 만들고 그걸 새 쓰레드(작업 단위라고 생각하면 됨)로 생성한다.

 

  이렇게 해당 작업에 대한 쓰레드에 요청과, 응답 객체를 생성해두고 또 다른 한편으론 Web.xml이라는 파일에 접근해 이 요청을 어떤놈이 처리하는지를 알아가지고 온다. 그 요청을 처리하는 친구가 Servlet 즉 서블릿 이란 친군데 담당 Selvlet을 찾아내면 그 서블릿에대 대고 doGet() 함수와 doPost()함수를 실행시킨다. 즉, httpServletRequest에서 전달받은 데이터들로 새로운 동적 페이지를 만드는 거다. 중간에 필요한 정보들은 DB에서 받아오기도 한다. 이렇게 만들어진 결과 페이지는 아까 만들어 두었던 httpServletResponse 객체에 담아놓고 작업이 완료되면 다시 WEB한테 보내는데 WEB은 HTTP(80포트)만 다루는 친구라 알아먹을 수 있게 HttpResponse 형태로 가공해서 WEB한테 던져주게 된다. 

 

  던져 주면서 동시에 방금 만들었던 httpServletRequest, httpServletResponse 객체들 그리고 해당 쓰레드, 즉 작업했던 것 모든것을 소멸시키고 아까 HttpResponse 를 받았던 WEB은 그와중에 그걸 사용자에게 전달하게 되면 요청이 완료가 되는 것이다.

7. Apache Tomcat Server의 Port

https://extsdd.tistory.com/77

 

[아마존 AWS 무료 EC2 서버 생성하기] #3 EC2 인스턴스 생성 / 구축 / 방화벽이란? / 탄력적 IP

https://extsdd.tistory.com/76 [아마존 AWS 무료 EC2 서버 생성하기] #2 IAM 계정 생성 후 권한 부여하기! https://extsdd.tistory.com/75 [아마존 AWS 무료 EC2 서버 생성하기] #1 AWS 회원가입/ AWS란 1. 서론..

extsdd.tistory.com

 WEB 서버인 Apache는 80포트를 이용하고 WAS서버인 Tomcat은 8080포트를 사용한다. 그리고 Apache랑 Tomcat 사이는 AJP라는 프로토콜을 사용하여 8009번 포트를 사용한다. 

그래서 우리가 저번에 EC2 방화벽 설정을 했을때 80포트와 8080포트를 개방시켜 놓은 이유이기도 하다.

  

자 이제 아파치 톰캣이 무엇인지 WEB 서버와 WAS서버가 무엇인지 개념을 잡았으니, 다음은 데이터베이스에 대해서 알아보도록 하자.

 

#아파치 #톰캣 #차이점 #WEB #WAS #서버 #웹서비스 #아마존 #AWS #EC2 #구축하기 #Apache #Tomcat #Server

 

반응형

+ Recent posts