본문 바로가기
Today I Learned 2024. 4. 19.

(24.04.19)[1주차] GitHub 가상 협업 상황 연습 / Web 서비스 기초 강의

팀 프로젝트가 끝나서 KPT회고를 마치고

짧은 시간을 내서 GitHub 협업에 대한 가정을 하고 실습을 했다..

이번 일주일은 협업 관련한 내용들을 학습했다고 생각

너무 빨리 지나갈 것 같다.

 

WIL은 앞으로  토요일 오전 일주일을 마무리 하면서 간단하게 작성을 할 수 있도록 할 것


GitHub 가상 협업 상황 연습 

계획

  • 실제 Java 파일을 이용, IntelliJ를 활용 실습 및 연습 실행
  • GitHub에 올려진 Java 코드를 가상의 3명의 협업자가 작업을 한뒤, main으로 합치는 연습
  • main이외의 두 작업자를 두 branch를 임의로 지정
  • rebase(협업에서 많이 사용)를 사용해서
  • 충돌이 일어날 코드위치를 만들어서 충돌을 해결해서 main으로 최종 확인, branch 삭제까지 완성

 

실습

IntelliJ에서 Git Bash 로 GitHub 연결

  • IntelliJ의 Settings - Version Control - GitHub  에 들어가 계정을 연동하면, 계정 레포지토리를 바로 선택해서 Push 가능
  • IntelliJ 특유의 설정값 저장 파일인 iml은 함께 생성되어 push

Sourcetree로 진행 상황 확인 및 설정

 

  • addclass 브랜치에서 임의의 클래스를 추가
    • addclass 브랜치에 main과 충돌을 일으킬 수 있는 임의의 코드 추가
  • nannno 브랜치에서 모든 주석을 삭제

noanno 브랜치를 main으로 rebase

 

이슈 : noanno 브랜치가 앞서 나가갈 때 main이 계속 따라가지 못하는 현상

  • main브랜치로 이동 후, git merge noanno 를 써서 merge를 해야 main이 맨 위로
    • pull과 push를 하겠다는 생각 X rebase끝나면 바로 merge를 쓸수 있도록
  • git push을 해줘야 orgin/main github의 main도 위의 상태처럼 모두 하나로 이어질 수 있음
    • 반드시 GitHub도 시간선을 따라가게 해줘야하기 때문
    • 그냥 모든 작업을 완료할 시 무조건 push
  • 그 다음에 브랜치를 삭제로 해결

이슈 : 충돌 발생을 안하는 현상

  • 일부러 충돌하게끔 main과 addclass에서 파일의 같은 줄 번호에System.out.println("main"); 코드를 추가했지만 충돌X
    • 추가한 코드의 양 만큼 밑으로 내려가면서 충돌을 피할 수 있는 것
  • 협업 상황에서는 중간에 클래스를 넣을경우 밀려서 중복해서 코드가 나올 수 있는 상황이 있을 수 있다는 점 간과X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이슈 : 충돌이 오히려 발생을 하는 현상

 

  • 글자는 밀리지만, 중간 빈줄로 띄우는 경우 충돌이 발생
    • 뾰족한 자동화 방법이 없기때문에 작업 전 pull을 항상 해줘서 시간선을 맞춰서 해주기
    • 중간 빈줄을 충돌이란 점 기억해두면서 작업하기

실습을 통한 정리

GitHub에서 내가 프로젝트에 참여를 해야할 때!

  1. 로컬에서 clone을 통해 main 프로젝트를 불러오기
  2. 그 시점의 main에서 내 로컬에서 내 담당 영역을 위한 새로운 branch 생성
  3. branch를 git push -u origin 통해서 GitHub에 내가 branch를 push할 똑같은 branch를 만들기
  4. 일단 pull, 그리고 작업, push
    • 충돌이 있을 경우 해결 (같은 branch에서 작업하는 작업자가 여럿일경우) 
  5. 개인 작업
  6. 내가 작업하고 있는 그 branch에서 git rebase main 을 통해 덧붙이기
    • main과 충돌 해결
  7. 로컬에서 rebase된 main과 덧붙여진 branch를 push
  8.  git pull을 통해서 로컬에서도 GitHub main최신버전 불러서 확인
  9. 불필요한 branch 삭제

마지막 pull 까지 해서 GitHub과 타임라인을 맞춘 상태

  • 단, 6번 부터는 main을 pull로 로컬로 GitHub에서 계속 당겨와서 최신화 추천 =시간선을 맞출 수 있도록.
  • Sourcetree는 익숙해지기 전에 절대 그 안에서 git작업 하지 않도록 건들지 말기

Web 서비스 기초 강의 간단 정리

해당 내용은 내일배움캠프 저작권 및 기타 자료와 중첩이 되는 부분이 많아 나름대로 본인의 정리와 더불어서 매우 간단하게 정리

자세한 내용은 Notion과 지급된 자료로 Notion 에 아카이빙 했다.

더보기

Web 개발

Web 서비스 개발

  • 웹 공간에서 제공하는 모든 서비스를 설계,제작, 유지보수 및 관리를 하는 것을 목적
    • 웹 개발자의 의의

Web 서비스 동작

  • 웹 공간 클라이언트 요청을 하는 것

서버

  • 해당 요청을 받아주는 곳
  • 사실상의 물리적인 컴퓨터, 데이터 센터
    • 접근할 수 있는 곳이 아닌 작은 노트북 조차도 서버가 될 수 있는 것

Web 서비스 도구

  • 일종의 서버를 대여해주는 서비스
    • AWS, Vercel, Netify 등
      • 서버는 물리적인 컴퓨터이기때문에 우리는 도구를 사용해서 Region에 있는 물리적인 서버를 빌리는 형태
  • 물리적인 서버의 도입이 한계를 보완
  • Auto scaling
    • 자동으로 규모를 증설하거나 축소 시킬 수 있는 기능
  • 과금제
  • 간단한 클라우드 서버와 같은 파일 서버도 존재

클라이언트 ↔ 서버

클라이언트

  • 요청의 주체로 도구를 활용해 웹 서버에 요청

서버

  • 받은 요청을 처리, 응답
  • ex) 회원가입 버튼을 누를 때(클라이언트의 요청), 서버가 로직에 따라 처리 후, 완료됬다는 응답을 주는 것 까지
  • 서버의 해당 프로그램 내부 설계된 요청을 캐치 → 요청에 따른 서비스를 실시 및 요청
    • 따라서, FE는 BE가 요청하는 데이터를 응답하므로 BE입장에서는 웹 서버, BE는 클라이언트, 그 구조에 따라 클라이언트-서버는 상대적인 개념
  • 요청처리
    • Rest API
      • HTTP , URL 요청, JSON 응답
    1. URL Method 조합
    2. HTTP 에 의해 URL+method

Web 서버의 기능

  • API 제공
    • API, Application Programming Interface
    • 서비스간 동적으로 데이터 정보를 제공하는 중간 매개체
    • JSON형태로 주로 응답을 반환

 


일주일도 지나갔고 다음주부터는 본격적으로 Java가 시작될 것 같다

다음주도 화이팅 할 수 있도록..