Module은 Program에서 수행하는 기능을 모아 놓은 것을 의미한다. 수학 계산,데이터베이스 처리,사용자 인터페이스 구성 등이 Module의 좋은 예시이다. 이들 각각의 기능은 별도의 Module로 구성될 수 있다. 또한, 하나의 Module은 여러 개의 Component로 구성될 수 있다.
💾< Component >
"Program에서 기능을 수행하는 단위"를 의미한다. 예를 들어, 프로그램이 계산하는 기능을 가지고 있다면, 계산 기능은 계산 컴포넌트라 부를 수 있다.
이러한 Component는 다른 Component에 의존할 수 있으며, 또는 다른 Component에 의존성을 제공할 수 있다.
이러한 의존성 관계를 정의하고 관리하는 방법 중 하나가 DI(Dependency Injection)인 것이다.
개발자는 종종 "Library"와 "Framework"라는 용어를 같은 의미로 사용한다. 그러나 차이가 있다.
🚀 < Library ? >
Library는 개발자가 이미 작성해놓은 코드 조각들로, 필요한 기능을 가져다 사용할 수 있게 도와준다.
예를 들어 Library는 IKEA에 가는 것과 같다. 이미 집이 있지만, 가구에 대한 약간의 도움이 필요해서. 다양한 물건을 고르고 선택할 수 있다.즉 내가 제어할 수 있다. 주로 Java의 'java.time' Package, React, jQuery가 있다.
🚀 < FrameWork ? >
FrameWork는 Application의 기본적 구조를 제공한다. 마치 건물의 철골 구조를 세우는 것처럼. 이처럼 FrameWork는 개발의 방향을 정해주지만, 사용하기 위해서는 규칙을 따라야 한다. 예를 들면, Spring이나 Django와 같은 BackEnd FrameWork 혹은 Vue나 AngularJs 같은 FrontEnd FrameWork가 있다.
Dog Class -> 품종, 색깔, 나이 attributes 혹은 먹다, 짖다, 꼬다 등의 행위 수행 가능.
ex2) Person Class
A Person class can have specific information such as name, age, and address
class Person {
String name;
int age;
void introduce() {
System.out.println("안녕하세요, 제 이름은 " + name + "이고, "
+ age + "살 입니다.");
}
}
// 클래스에서 객체 생성
Person person = new Person();
person.name = "John Doe";
person.age = 30;
person.introduce();
This code defined a 'Person' class.
It contains name and age variables and an include method.
The introduce method prints personal information. And create an object from the class, and set its variables to specific values. Finally, we call the object's introduce method to display the information.
프로젝트 진행중 필수적으로 나타나는 오류와 버그에 대해 전반적인 과정을 문서화를 통해 예방.
문제해결 과정을 기록,상기 -> 추후 같은 문제 발생 시 신속 대처
트러블슈팅 절차를 통해 계속되는 추가 질문을 답변하고 해결책 목록을 좁혀나가는 단계를 밟아나가거나 문제 해결에 도움이 될 해결책을 즉시 구현.
⛔트러블 슈팅의 기본적인 개념
가장 단순하고 빈도 높은 원인에서 가능성을 지워가는 것
이게 핵심이다.트러블 슈팅은 제거법의 개념을 기본으로 하고있다.pc가 멈췄어요 와 같은 트러블에 대해서는 전원의 on/off 여부, 전원플러그는 콘센트에 꽂혀있는가 와 같은 인과관계에서 하나씩 가능성을 제거해나간다.
⛔트러블 슈팅 방법
1. 문제 정의
문제가 되는 동작 혹은 원인 확인ex) 배탈나버림
2. 사실 수집
해당 문제에 대한 정보 수집
문제를 재현하는 방법 수집ex) 배탈나게 한 음식에 대한 정보 수집
3. 원인추론
확인된 사실을 통해 원인 추론ex) 아 고기때문에 배탈난거같다 많이먹었거든
4. 조사방법 결정
증상과 추론 원인을 기반으로 어떤 순서로 문제를 해결할지 결정
보통 가능성이 높은 원인을 우선적으로 조사ex) 고기를 얼마나 먹었는지 엄마한테 물어보기로 결정
5. 조사 방법 구현
앞서 결정한 내용을 토대로 문제를 조사ex) 엄마 나 얼마나 먹었어? 한 5인분?
6. 결과 관찰
조사 방법을 구현하고 그 결과를 기록
만약 문제가 해결되지 않았다면 4번으로 돌아감ex) 아 5인분먹으면 배탈나는구나 이제 5인분말고 4인분까지 먹어야겟다
7. 문서 작성
문제를 해결한 순서를 정리해 문서화함ex) 머리에 새겨넣는다
⛔적절한 트러블 슈팅을 실현하기 위해서
예시를 쉽게 들어서 잘 대처할 수 있다고 생각이 들 수도 있지만 실제 운용 측면에서 트러블 슈팅에는 몇 가지 과제가 있어 생각처럼 운용이 되지 않는 경우도 있다.
우선순위에 따라 어떤 대응을 해야하나
개발운영팀에서 우선순위가 매우낮은 트러블이라도 문제가 발생하면 바로 대처해야된다. 우선순위가 매우 낮더라도 무시하지말고 우선도가 낮은 트러블에 대해 대처방안을 수립해야된다.대처 프로세스 체계화
이슈가 생겼을때 해당 이슈를 한명만 처리할 수밖에 없다면 그 한명은 업무쏠림으로 다른 업무에 무리가 갈 수가 있다. 또는 인원부족으로 신입이나 경력이 짧은 직원이 대처해야된다면 이를 어찌 해결해야될까?
이러한 상황을 피하기 위해 트러블 대응 업무를 체계화하고 매뉴얼로 문서화를 하여 표준화 하는 것이 중요하다. 그렇게 하면 누구라도 동일한 대응이 가능하여 원활하게 해결, 복구가 가능하다
⛔정리
개인적으로 개발이라는 분야는 트러블 슈팅을 통해 실력이 급상승할 수 있다는 생각을 가지고 있다. 처음 시작할때와 프로젝트를 시작하면서 겪었던 모든 오류와 과정을 몸소 겪으며 얻은 경험과 소스와 문서를 추후 다른 프로젝트를 진행하면서 생기는 오류에 대입해볼 수도 아니면 같은 오류일때 바로바로 대처가 가능하기 때문이다.
파이썬 머신러닝 프로젝트를 진행하면서 환경세팅에만 2주가 걸렸다. 난생 처음해보는 분야이기에 분명 구글에 검색한대로 따라하고 환경변수 설정하고 install하라는 모든 행동을 다했지만 안되어서 멘탈이 박살나기 직전까지 하다가 결국 해결했는데 이는 절대 잊어버릴 수가 없다.
면접에서 트러블슈팅 사례를 말해달라고 하면 당황하지말고 평소 개인 토이프로젝트나 프로젝트에 대한 트러블 슈팅에 대해 잘 숙지하고 정리를 해서 점수를 얻도록 하자.
API의 정확한 의미는Application Programing interface이다. 우리나라 말로 "응용 프로그램 프로그래밍 인터페이스"
초보자에게 있어서,API는 굉장히 이해하기 어렵다. 이유는 컴퓨터 공학 분야의 추상적인 개념 이기 때문일 것이다.
나 또한 API라는 것을 처음 들어보았을 때, 설명글을 읽었는데 무슨 말인지 이해 못 해서 한 두 번 정도 더 읽었던 기억이 있다.
그러나 이해하고 보니, API는 프로그래밍을 배우는 데 반드시 필요한 지식이었고, 개발할 때 매우 매우 자주 등장 하니, 꼭 알아 두어야 할 필요가 있다.. 이해하여 내 것으로 만들면, 개발의 폭도 넓어져서 개발자의 역량 또한 높아지니까 알아둔다고 손해 볼 건 없다!
API는소프트웨어의 일부를 공개하여 다른 소프트웨어와 기능을 공유할 수 있도록 한 것이다.
소프트웨어의 일부를 WEB에 공개함으로써 누구나 외부에서 이용할 수 있게 된다.
이를 통해 자신의 소프트웨어에 다른 소프트웨어의 기능을 내장할 수 있게 되므로 애플리케이션 간에 연동할 수 있다.
API의 장점
1. 효율적으로 프로그래밍이 가능하다.
만들고 싶은 기능이 이미 API에 게시되어 있다면 동일한 프로그램을 하나를 직접 만들 필요가 없다.
이를 통해 개발 시간을 대폭 단축할 수 있다.
또한 무료로 이용할 수 있으므로 개발 비용도 대폭 절감할 수 있고 효율적으로 애플리케이션을 제작할 수 있다.
그 밖에도, 툴이나 서비스를 사용하는 것으로 보다 앱 개발을 효율화할 수 있다.
2. 데이터를 보조 이용 가능하다.
API에서는 타사 데이터를 참고, 사용할 수도 있다.같은 정보를 다양한 분야에서 활용하게 함으로써 정보를 분석하는 것이 용이해지고, 각 분야에 특화된 분석을 할 수 있다.거기에서 고객의 경향과 특징을 발견함으로써 혁신이 태어나 새로운 비즈니스가 탄생할 수 있다.
3. 보안 향상
페이스북, 트위터, 구글의 API 키를 획득하면 자사 서비스에 SNS 로그인을 설정할 수 있다.즉, 처음부터 회원 등록 시스템을 제작하지 않아도 Facebook, Twitter, Google의 보안 수준이 높은 시스템을 사용할 수 있어자사의 서비스 보안을 향상할 수 있다.다만, 어디까지나 API를 이용한 일례에 지나지 않으므로 주의.
API 활용 사례
LINE API
LINE에는 다음과 같은 API가 있다.
채팅봇 개발
LINE 로그인 기능
IoT 개발
음성 어시스턴트 개발
LINE 결제 기능
소셜 버튼 · 알림 기능
이처럼 LINE은 웹 개발에 사용할 수 있는 것뿐만 아니라 IoT 개발 등 폭넓은 기능을 공개하고 있다.
YouTubeAPI
YouTubeAPI는 동영상 실적을 높이기 위해 분석할 수 있는 기능을 추가할 수 있다.YouTubeAPI에서 할 수 있는 작업은 다음과 같다.
동영상의 효과 측정을 할 수 있다.
동영상 제어 가능.
채널의 데이터를 일괄 취득할 수 있다.
Amazon API
Amazon의 API로 할 수 있는 일은 다음과 같다.
1일 단위로의 판매액·소개료의 추이를 파악할 수 있다.
상품의 최신 정보를 표시할 수 있다.
Amazon의 API는 이러한 제휴사에게 유용한 기능을 제공한다.
이 외에도, 공공데이터 Open API 서비스 등, 정말 무궁무진한 API들이 많으니, 공공데이터 API 활용법 등, 공부를 하는 것이 웹 개발에 아주 큰 도움이 될 것이라고 나는 확신한다!