PBL : 후기

송민준·2023년 7월 14일

PBL 교육

목록 보기
10/11

들어가기 전

프로젝트를 성공적으로 완수하는 방법

학생들은 프로젝트를 짧게 잡자.

이번주 술먹자 → 2주후에 보자 → 가능

이번주 술먹자 → 3달후에 보자 → 불가능

학생이 프로젝트에 온전히 투입할 수 있는 기간은 최대 4주이다.

개인사정에 대한 시간을 확보하자

프로젝트 시간을 정해서 그 시간 외에는 하지 마라

하루종일 하는 사람과 하루에 3시간만 하는 사람의 결과 차이는 확실하다.

하루에 할 수 있는 적정시간을 선택해서 몰입을 해라

2주던 4주던 기간안에 못한다?

일단 끊는다. 그리고 휴식을 가지고 다시 한다.

기간안에서 문제가 발생해서 기간 내에 못한다면. 그 문제는 프로젝트에서 벗어나야 보인다.

시간을 어떻게 사용하는가에 따라서 졸업하고 나서 사람이 달라질 수 있다.

미들웨어 서버(데몬)는 개발을 어떻게 하는가

미들웨어의 코드는 입력과 출력으로 이루어진 단 하나만의 목적을 가지고 동작한다.

우리가 흔히 생각하는 서버는 라이브러리, 모델들이 섞여있지만 미들웨어는다르다.

우리가 파일을 처음 작성할 때 C언어로 include하는 한세트. 이걸 짠다고 생각하면된다.

미들웨어는 그런 걸 짜는데 목적이 확실하다. (서버가 죽었는지 확인,.. )

MSA할 때 미들웨어의 기능은 하나의 기능을 강력하게 온전히 CPU 파워를 다 주면서 빠르게 해야할 때 사용한다. (요즘은 C, Go 언어 사용)

멀티 스레드, 프로세싱을 통해

DB 정규화 과정은 어디까지 하나요

실무에서 ERD 짤 때는 이정도로 파편화해도 되나 싶을 정도로 한다.

AD 서버에 관한 것만 20개 30개 나온다.

시퀀스의 흐름대로 ERD로 짜서 적게 나온다.

AD 서버를 만든다고 하면 AD Info(코어)는 뭐가 있어야하냐면 광고라고 하는 데이터에 준하는게 있어야한다. 광고 몇카운트 나왔는지 등은 없어야한다.

AD Info를 가져올 때 최소한 4개 테이블은 조인을 해야한다.

하나의 테이블에서 사용하고 싶다면 NoSQL을 사용하면 된다. 신규회사들은 NoSQL을 사용한다.

RDBMS가 성능이 느리더라도 사용하는 이유는 “복구” 가 가능하다. 복구 정책에 대해서 정말 잘 짜놨다. NoSQL은 그런 정책을 못따라간다.

OOP 개발 사례

OOP의 특징: 다형성, 캡슐화, 상속

OOP 적으로 짜냐 안짜냐는 상속, 캡슐화, 다형성의 특징을 잘 사용하는가를 보는게 맞는데 OOP를 잘 짰는지를 보려면 딱 하나를 보면 된다.

  1. 캡슐화
    1. 내가 짠 코드를 다른사람에게 보여줬을 때 이건 건들면 안되는 코드구나를 인지할 수 있을 때 캡슐화가 되었는지 알 수 있다.
    2. private라고 지정하면 클래스 내에서만 사용한다고 정의하는 것. 다른 사람에게 줄 때 재사용할 수 있기 때문에 건들지말고 사용하라고 하기 위해.
    3. private라고 지정한 곳을 바꾸고 싶다면 이 코드를 짠 사람에게 물어봐야한다.
  2. 추상화
    1. 추상화 코드의 특징: 추상 클래스를 가져다 쓰면 무조건 정의된 함수는 다 작성해야한다. 오버라이드해야한다. 게임 캐릭터를 만들었다면 한손에 검, 아니면 양손, 한손에 검과 한손에 지팡이 등등.. Atack, Defence를 정해놓는다면 캐릭터별로 내가 착용해야할 아이템과 메소드가 정의되는데 팀원 하나하나 직업을 잡고 개발한다. 좋은 팀 리드는 추상클래스를 만들어두고 이런 걸 작성해야한다고 정해두면 . 동질의 작업을 할 때 위에서 추상클래스를 적어두면 된다. 개발자는 코드로도 리딩할 수 있어야한다.

DB에서 데이터를 가져오는 코드는 굉장히 민감하기 때문에 private로 묶어두고 그 위에 함수를 만들어두고 호출하고

class Account_dao extends common_dao
	public function getEduMemInfo(..)
		...
		$query = " SELECT .. " 
	...
}

위는 캡슐화가 되지 않은 사례이다.


class Account_dao extends common_dao
	public function getEduMemInfotoDB($account_ID)
		return getEdiMemInfo)
	private function getEduMemInfo(..)
		...
		$query = " SELECT .. "
		return result 
	...
}

위는 캡슐화가 된 사례이다.


class Account_dao extends common_dao
	public function getEduMemInfotoDB($account_ID) //모델 코드이다.
		//check input param
		$account_id 
		result =  getEdiMemInfo()
		
	private function getEduMemInfo(..) //DAO 코드이다.
		...
		$query = " SELECT .. "
		return result 
	...
}

위는 캡슐화 된 상태에서 에러 체크하는 코드이다.

최종 산출물

광고를 관리하는 플렛폼 사이트





후기

짧지만 꽉찬 2주 PBL 과정이 끝이 났다. 우리가 만든 결과물은 미션에는 미치지 못했지만 짧은 개발기간치고는 연동까지 완료한 걸 보니 생각보다 잘 끝마쳤다는 생각이 든다. 팀원들과 시퀀스 다이어그램부터 고민을 많이 했던 덕이라고 생각한다. 교육은 끝났지만 이 경험과 멘토님이 보여준 실제 개발자의 세계와 현실적인 조언들은 남아서 필드에 들어간 후 도움이 될 것이라고 확신이 든다.

profile
개발자

0개의 댓글