Search

15주차 멘토링

진행 일자
2023/12/28
피드백 여부
피드백 완
github
contribute vs fork

멘토링

말똥말똥 리팩토링 수비님과 이어갈 예정~!
contribute
원본 소스 코드있는 레포지토리에서 branch를 파생해서 여기서 변경된것들을 작업하고
이걸 main/develop 브랜치에 PR을 올려서 머지한다!
레포지토리에 작업자들을 컨트리뷰터로 추가해줘야되는 설정을 해야함!
fork
원본 소스코드를 → 내 레포지토리로 복제해옴!
포크질! → 포크로 찍어서 뜨는것
개인의 깃헙 저장소!
원본에 PR을 보내서 어프로브 > 머지하고 이런 과정은 동일하게 거칠 수 있다!
오픈 소스 커뮤니티
포크를 포크할 수 있다~
어디든지 PR을 보낼 수 있다!
서버 API의 필요성에 대해
DB에 직접 CRUD를 할거야~
리버스 엔지니어링을 해서 앱을 까봐요! 해커들이~
앱 소스 코드를 알아낸다!
소스코드하고 DB의 키값이 어떤건지 → 이 두개만 알면 게임 끝!
클라에서는 DB를 직접 접근하는건 말도 안된다!
힘들겠지만 최대한 보안에 신경쓰도록 해보자~
ctrl + option + -
케이크 앱을 여러 매장 등록할 수 있게~! 사업화!!
현재는 투자보단 지표를 내봐서 사업성을 입증하고 니즈가 확실한지!!
PO의 관점에서 바라보기!
환영합니다ㅎㅎ
시니나 케이크 화이팅!!
2월에 Mash-up 모집~ 많관부ㅎㅎ
DispatchQueue
UI는 main thread
은행 앱을 만든다~
1번 고객 (동일계좌)
2번 고객
————— 시간의 흐름——————-
1.
1번 고객이 10,000원 입금
2.
2번 고객이 10,000원 출금 (출금이 아직 완료되진 않음)
3.
1번 고객이 10,000원 출금 (출금 버튼을 누름)
은행앱
→ 은행원은 3명
→ 고객줄은 1줄
→ 은행원 2명은 예금/출금 업무 (5초)
→ 은행원 1명은 대출 업무 (10초)
1.
고객Queue → 예금 / 출금 / 예금 / 대출 / 예금
예출금 은행원 예금(1번) 예금(3번)
예출금 은행원 출금 (2번)
대출 은행원 대출 (4번)
예출금 대출 예출금 대출~~~~~~~~~
Context Switching
예출금 1번 thread → 예금 (1번)
예출금 2번 thread → 출금 (2번)
대출 3번 thread
3개의 멀티스레드 → 1개의 프로세스 (프로그램 실행을 위한 작업단위)
스레드는 하나의 프로스세 내에서 실행되는 작업(Task) 흐름의 단위
~~~
멀티 스레딩 → 프로세스에서 둘 이상의 스레드를 동시에 실행하는것!
비동기는 작업에 대해 요청/결과를 동기로 실행하지 않고 1번 작업에 대해서 요청을 받고 결과를 처리하지 않아도 2번 작업 시작하는것!
→ 작업 효율을 높일수 있음
Concurrent(동시성) vs Paralleism(병렬)
동시성
싱글코어 멀티스레딩 (사실상 동시에 하는것은 아님)
논리적으로 동시에! (물리적으로 동시는 아님)
시간 분할 방식을 이용해서 스레드를 서로 번갈아가면서 일을 하게 하는것!
그래서 겉으로보면 저 병렬적인것과 동일하게 동시에 하는것처럼 보임! (논리적으로~ 물리적 ㄴㄴ)
비동기 자체가 동시성에 대해서 깊은 관련이 있다!
Context Switching (문맥 교환)
스레드의 작업 타임을 교환하는것!
1초 2초 3초 4초 5초
예금 예금 예금 예금 예금
출금 출금 출금 출금 출금
예금 출금 예금 출금 출금 예금 출금 예금
병렬은 정말 물리적으로 병렬한것!
멀티코어!
CPU가 여러개 → 일꾼이 두마리~! → 병렬적인것! (물리적으로 동시에!)
멀티 프로세스 vs 멀티 스레드
멀티스레드
프로세스
코드 / 데이터 / 스택 / 힙 → 프로세스 (OS내부에서)
프로그램을 실행시키는 인스턴스
프로세스간에는 각 메모리 영역이 독립적~!
최소 1개의 스레드를 보유하고 있어요!
프로세스끼리 기본적으로 접근 불가 (IPC, 프로세스 간 통신, 소켓 통신)
스레드
프로세스 내에서 실행되는 하나의 흐름 단위
한 프로세스 내에서 둘 이상의 스레드가 동시에 실행될 수 있죠~
한 프로세스에 여러 스레드가 존재하기 때문에 프로세스의 메모리 자체를 여러 스레드가 공유할수 있다~
스택 영역을 각각 스레드가 독립적으로 할당받고 힙/데이터 영역을 공유
CPU에서는 프로세스/스레드든 올려가지고 작업을 실행시켜야함
멀티 프로스세스
OS안에서 여러 프로세스로 업무를 처리
멀티 스레드
하나의 프로세스 내에서 여러 스레드로 작업을 처리~
스레드는 메모리 영역을 공유하기때문에 메모리가 애초에 절약이된다!
속도가 빠른것~!
멀티스레드는 힙/데이터 영역의 값을 공유 → 동기화 문제!
Lock, Semaphore 같은 차단목을 만듬!
병목현상이 생길 수 있음
톨게이트가 없다보니까 사고가 많이 났음
톨게이트를 1개만 만듬
금요일 저녁 퇴근시간 → 병목이 일어남 ㅠ